You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2341 lines
60 KiB

{
"mainCode": "// File: ../../circuits/sha256/bitify.circom\nfunction Num2Bits(ctx)\n{\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[])], bigInt(bigInt(ctx.getVar(\"i\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getSignal(\"in\", [])).shr(bigInt(ctx.getVar(\"i\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\");\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n ctx.assert(ctx.getVar(\"lc1\",[]), ctx.getSignal(\"in\", []));\n}\n\nfunction Bits2Num(ctx)\n{\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n ctx.setSignal(\"out\", [], ctx.getVar(\"lc1\",[]));\n ctx.assert(ctx.getSignal(\"out\", []), ctx.getVar(\"lc1\",[]));\n}\n\n\n// File: ../../circuits/sha256/binsum.circom\nfunction nbits(ctx) {\n ctx.setVar(\"n\", [], \"1\");\n ctx.setVar(\"r\", [], \"0\");\n while (bigInt(bigInt(ctx.getVar(\"n\",[])).add(__P__).sub(bigInt(\"1\")).mod(__P__)).lt(bigInt(ctx.getVar(\"a\",[]))) ? 1 : 0) {\n (ctx.setVar(\"r\", [], bigInt(ctx.getVar(\"r\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__);\n ctx.setVar(\"n\", [], bigInt(ctx.getVar(\"n\",[])).mul(bigInt(\"2\")).mod(__P__));\n }\n\n return ctx.getVar(\"r\",[]);;\n}\nfunction BinSum(ctx)\n{\n ctx.setVar(\"nout\", [], ctx.callFunction(\"nbits\", [bigInt(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"n\",[])), __P__)).add(__P__).sub(bigInt(\"1\")).mod(__P__)).mul(bigInt(ctx.getVar(\"ops\",[]))).mod(__P__)]));\n ctx.setVar(\"lin\", [], \"0\");\n ctx.setVar(\"lout\", [], \"0\");\n for (ctx.setVar(\"k\", [], \"0\");bigInt(ctx.getVar(\"k\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0;(ctx.setVar(\"k\", [], bigInt(ctx.getVar(\"k\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n for (ctx.setVar(\"j\", [], \"0\");bigInt(ctx.getVar(\"j\",[])).lt(bigInt(ctx.getVar(\"ops\",[]))) ? 1 : 0;(ctx.setVar(\"j\", [], bigInt(ctx.getVar(\"j\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setVar(\"lin\", [], bigInt(ctx.getVar(\"lin\",[])).add(bigInt(bigInt(ctx.getSignal(\"in\", [ctx.getVar(\"j\",[]),ctx.getVar(\"k\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"k\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n }\n\n for (ctx.setVar(\"k\", [], \"0\");bigInt(ctx.getVar(\"k\",[])).lt(bigInt(ctx.getVar(\"nout\",[]))) ? 1 : 0;(ctx.setVar(\"k\", [], bigInt(ctx.getVar(\"k\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setSignal(\"out\", [ctx.getVar(\"k\",[])], bigInt(bigInt(ctx.getVar(\"k\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getVar(\"lin\",[])).shr(bigInt(ctx.getVar(\"k\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"k\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"k\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\");\n ctx.setVar(\"lout\", [], bigInt(ctx.getVar(\"lout\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"k\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"k\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n ctx.assert(ctx.getVar(\"lin\",[]), ctx.getVar(\"lout\",[]));\n}\n\n\nfunction A(ctx)\n{\n ctx.setPin(\"n2ba\", [], \"in\", [], ctx.getSignal(\"a\", []));\n ctx.assert(ctx.getPin(\"n2ba\", [], \"in\", []), ctx.getSignal(\"a\", []));\n ctx.setPin(\"n2bb\", [], \"in\", [], ctx.getSignal(\"b\", []));\n ctx.assert(ctx.getPin(\"n2bb\", [], \"in\", []), ctx.getSignal(\"b\", []));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"32\")) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setPin(\"sum\", [], \"in\", [\"0\",ctx.getVar(\"i\",[])], ctx.getPin(\"n2ba\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.assert(ctx.getPin(\"sum\", [], \"in\", [\"0\",ctx.getVar(\"i\",[])]), ctx.getPin(\"n2ba\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"sum\", [], \"in\", [\"1\",ctx.getVar(\"i\",[])], ctx.getPin(\"n2bb\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.assert(ctx.getPin(\"sum\", [], \"in\", [\"1\",ctx.getVar(\"i\",[])]), ctx.getPin(\"n2bb\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"b2n\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getPin(\"sum\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.assert(ctx.getPin(\"b2n\", [], \"in\", [ctx.getVar(\"i\",[])]), ctx.getPin(\"sum\", [], \"out\", [ctx.getVar(\"i\",[])]));\n }\n\n ctx.setSignal(\"out\", [], ctx.getPin(\"b2n\", [], \"out\", []));\n ctx.assert(ctx.getSignal(\"out\", []), ctx.getPin(\"b2n\", [], \"out\", []));\n}\n\n",
"signalName2Idx": {
"one": 0,
"main.a": 3,
"main.b": 2,
"main.out": 1,
"main.n2ba.in": 3,
"main.n2ba.out[0]": 4,
"main.n2ba.out[1]": 5,
"main.n2ba.out[2]": 6,
"main.n2ba.out[3]": 7,
"main.n2ba.out[4]": 8,
"main.n2ba.out[5]": 9,
"main.n2ba.out[6]": 10,
"main.n2ba.out[7]": 11,
"main.n2ba.out[8]": 12,
"main.n2ba.out[9]": 13,
"main.n2ba.out[10]": 14,
"main.n2ba.out[11]": 15,
"main.n2ba.out[12]": 16,
"main.n2ba.out[13]": 17,
"main.n2ba.out[14]": 18,
"main.n2ba.out[15]": 19,
"main.n2ba.out[16]": 20,
"main.n2ba.out[17]": 21,
"main.n2ba.out[18]": 22,
"main.n2ba.out[19]": 23,
"main.n2ba.out[20]": 24,
"main.n2ba.out[21]": 25,
"main.n2ba.out[22]": 26,
"main.n2ba.out[23]": 27,
"main.n2ba.out[24]": 28,
"main.n2ba.out[25]": 29,
"main.n2ba.out[26]": 30,
"main.n2ba.out[27]": 31,
"main.n2ba.out[28]": 32,
"main.n2ba.out[29]": 33,
"main.n2ba.out[30]": 34,
"main.n2ba.out[31]": 35,
"main.n2bb.in": 2,
"main.n2bb.out[0]": 36,
"main.n2bb.out[1]": 37,
"main.n2bb.out[2]": 38,
"main.n2bb.out[3]": 39,
"main.n2bb.out[4]": 40,
"main.n2bb.out[5]": 41,
"main.n2bb.out[6]": 42,
"main.n2bb.out[7]": 43,
"main.n2bb.out[8]": 44,
"main.n2bb.out[9]": 45,
"main.n2bb.out[10]": 46,
"main.n2bb.out[11]": 47,
"main.n2bb.out[12]": 48,
"main.n2bb.out[13]": 49,
"main.n2bb.out[14]": 50,
"main.n2bb.out[15]": 51,
"main.n2bb.out[16]": 52,
"main.n2bb.out[17]": 53,
"main.n2bb.out[18]": 54,
"main.n2bb.out[19]": 55,
"main.n2bb.out[20]": 56,
"main.n2bb.out[21]": 57,
"main.n2bb.out[22]": 58,
"main.n2bb.out[23]": 59,
"main.n2bb.out[24]": 60,
"main.n2bb.out[25]": 61,
"main.n2bb.out[26]": 62,
"main.n2bb.out[27]": 63,
"main.n2bb.out[28]": 64,
"main.n2bb.out[29]": 65,
"main.n2bb.out[30]": 66,
"main.n2bb.out[31]": 67,
"main.sum.in[0][0]": 4,
"main.sum.in[0][1]": 5,
"main.sum.in[0][2]": 6,
"main.sum.in[0][3]": 7,
"main.sum.in[0][4]": 8,
"main.sum.in[0][5]": 9,
"main.sum.in[0][6]": 10,
"main.sum.in[0][7]": 11,
"main.sum.in[0][8]": 12,
"main.sum.in[0][9]": 13,
"main.sum.in[0][10]": 14,
"main.sum.in[0][11]": 15,
"main.sum.in[0][12]": 16,
"main.sum.in[0][13]": 17,
"main.sum.in[0][14]": 18,
"main.sum.in[0][15]": 19,
"main.sum.in[0][16]": 20,
"main.sum.in[0][17]": 21,
"main.sum.in[0][18]": 22,
"main.sum.in[0][19]": 23,
"main.sum.in[0][20]": 24,
"main.sum.in[0][21]": 25,
"main.sum.in[0][22]": 26,
"main.sum.in[0][23]": 27,
"main.sum.in[0][24]": 28,
"main.sum.in[0][25]": 29,
"main.sum.in[0][26]": 30,
"main.sum.in[0][27]": 31,
"main.sum.in[0][28]": 32,
"main.sum.in[0][29]": 33,
"main.sum.in[0][30]": 34,
"main.sum.in[0][31]": 35,
"main.sum.in[1][0]": 36,
"main.sum.in[1][1]": 37,
"main.sum.in[1][2]": 38,
"main.sum.in[1][3]": 39,
"main.sum.in[1][4]": 40,
"main.sum.in[1][5]": 41,
"main.sum.in[1][6]": 42,
"main.sum.in[1][7]": 43,
"main.sum.in[1][8]": 44,
"main.sum.in[1][9]": 45,
"main.sum.in[1][10]": 46,
"main.sum.in[1][11]": 47,
"main.sum.in[1][12]": 48,
"main.sum.in[1][13]": 49,
"main.sum.in[1][14]": 50,
"main.sum.in[1][15]": 51,
"main.sum.in[1][16]": 52,
"main.sum.in[1][17]": 53,
"main.sum.in[1][18]": 54,
"main.sum.in[1][19]": 55,
"main.sum.in[1][20]": 56,
"main.sum.in[1][21]": 57,
"main.sum.in[1][22]": 58,
"main.sum.in[1][23]": 59,
"main.sum.in[1][24]": 60,
"main.sum.in[1][25]": 61,
"main.sum.in[1][26]": 62,
"main.sum.in[1][27]": 63,
"main.sum.in[1][28]": 64,
"main.sum.in[1][29]": 65,
"main.sum.in[1][30]": 66,
"main.sum.in[1][31]": 67,
"main.sum.out[0]": 68,
"main.sum.out[1]": 69,
"main.sum.out[2]": 70,
"main.sum.out[3]": 71,
"main.sum.out[4]": 72,
"main.sum.out[5]": 73,
"main.sum.out[6]": 74,
"main.sum.out[7]": 75,
"main.sum.out[8]": 76,
"main.sum.out[9]": 77,
"main.sum.out[10]": 78,
"main.sum.out[11]": 79,
"main.sum.out[12]": 80,
"main.sum.out[13]": 81,
"main.sum.out[14]": 82,
"main.sum.out[15]": 83,
"main.sum.out[16]": 84,
"main.sum.out[17]": 85,
"main.sum.out[18]": 86,
"main.sum.out[19]": 87,
"main.sum.out[20]": 88,
"main.sum.out[21]": 89,
"main.sum.out[22]": 90,
"main.sum.out[23]": 91,
"main.sum.out[24]": 92,
"main.sum.out[25]": 93,
"main.sum.out[26]": 94,
"main.sum.out[27]": 95,
"main.sum.out[28]": 96,
"main.sum.out[29]": 97,
"main.sum.out[30]": 98,
"main.sum.out[31]": 99,
"main.sum.out[32]": 100,
"main.b2n.in[0]": 68,
"main.b2n.in[1]": 69,
"main.b2n.in[2]": 70,
"main.b2n.in[3]": 71,
"main.b2n.in[4]": 72,
"main.b2n.in[5]": 73,
"main.b2n.in[6]": 74,
"main.b2n.in[7]": 75,
"main.b2n.in[8]": 76,
"main.b2n.in[9]": 77,
"main.b2n.in[10]": 78,
"main.b2n.in[11]": 79,
"main.b2n.in[12]": 80,
"main.b2n.in[13]": 81,
"main.b2n.in[14]": 82,
"main.b2n.in[15]": 83,
"main.b2n.in[16]": 84,
"main.b2n.in[17]": 85,
"main.b2n.in[18]": 86,
"main.b2n.in[19]": 87,
"main.b2n.in[20]": 88,
"main.b2n.in[21]": 89,
"main.b2n.in[22]": 90,
"main.b2n.in[23]": 91,
"main.b2n.in[24]": 92,
"main.b2n.in[25]": 93,
"main.b2n.in[26]": 94,
"main.b2n.in[27]": 95,
"main.b2n.in[28]": 96,
"main.b2n.in[29]": 97,
"main.b2n.in[30]": 98,
"main.b2n.in[31]": 99,
"main.b2n.out": 1
},
"components": [
{
"name": "main",
"params": {},
"template": "A",
"inputSignals": 2
},
{
"name": "main.n2ba",
"params": {
"n": "32"
},
"template": "Num2Bits",
"inputSignals": 1
},
{
"name": "main.n2bb",
"params": {
"n": "32"
},
"template": "Num2Bits",
"inputSignals": 1
},
{
"name": "main.sum",
"params": {
"n": "32",
"ops": "2"
},
"template": "BinSum",
"inputSignals": 64
},
{
"name": "main.b2n",
"params": {
"n": "32"
},
"template": "Bits2Num",
"inputSignals": 32
}
],
"componentName2Idx": {
"main": 0,
"main.n2ba": 1,
"main.n2bb": 2,
"main.sum": 3,
"main.b2n": 4
},
"signals": [
{
"names": [
"one"
],
"triggerComponents": []
},
{
"names": [
"main.out",
"main.b2n.out"
],
"triggerComponents": []
},
{
"names": [
"main.b",
"main.n2bb.in"
],
"triggerComponents": [
0,
2
]
},
{
"names": [
"main.a",
"main.n2ba.in"
],
"triggerComponents": [
0,
1
]
},
{
"names": [
"main.n2ba.out[0]",
"main.sum.in[0][0]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[1]",
"main.sum.in[0][1]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[2]",
"main.sum.in[0][2]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[3]",
"main.sum.in[0][3]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[4]",
"main.sum.in[0][4]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[5]",
"main.sum.in[0][5]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[6]",
"main.sum.in[0][6]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[7]",
"main.sum.in[0][7]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[8]",
"main.sum.in[0][8]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[9]",
"main.sum.in[0][9]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[10]",
"main.sum.in[0][10]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[11]",
"main.sum.in[0][11]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[12]",
"main.sum.in[0][12]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[13]",
"main.sum.in[0][13]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[14]",
"main.sum.in[0][14]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[15]",
"main.sum.in[0][15]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[16]",
"main.sum.in[0][16]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[17]",
"main.sum.in[0][17]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[18]",
"main.sum.in[0][18]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[19]",
"main.sum.in[0][19]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[20]",
"main.sum.in[0][20]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[21]",
"main.sum.in[0][21]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[22]",
"main.sum.in[0][22]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[23]",
"main.sum.in[0][23]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[24]",
"main.sum.in[0][24]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[25]",
"main.sum.in[0][25]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[26]",
"main.sum.in[0][26]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[27]",
"main.sum.in[0][27]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[28]",
"main.sum.in[0][28]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[29]",
"main.sum.in[0][29]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[30]",
"main.sum.in[0][30]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2ba.out[31]",
"main.sum.in[0][31]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[0]",
"main.sum.in[1][0]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[1]",
"main.sum.in[1][1]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[2]",
"main.sum.in[1][2]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[3]",
"main.sum.in[1][3]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[4]",
"main.sum.in[1][4]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[5]",
"main.sum.in[1][5]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[6]",
"main.sum.in[1][6]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[7]",
"main.sum.in[1][7]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[8]",
"main.sum.in[1][8]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[9]",
"main.sum.in[1][9]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[10]",
"main.sum.in[1][10]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[11]",
"main.sum.in[1][11]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[12]",
"main.sum.in[1][12]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[13]",
"main.sum.in[1][13]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[14]",
"main.sum.in[1][14]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[15]",
"main.sum.in[1][15]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[16]",
"main.sum.in[1][16]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[17]",
"main.sum.in[1][17]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[18]",
"main.sum.in[1][18]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[19]",
"main.sum.in[1][19]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[20]",
"main.sum.in[1][20]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[21]",
"main.sum.in[1][21]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[22]",
"main.sum.in[1][22]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[23]",
"main.sum.in[1][23]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[24]",
"main.sum.in[1][24]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[25]",
"main.sum.in[1][25]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[26]",
"main.sum.in[1][26]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[27]",
"main.sum.in[1][27]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[28]",
"main.sum.in[1][28]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[29]",
"main.sum.in[1][29]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[30]",
"main.sum.in[1][30]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.n2bb.out[31]",
"main.sum.in[1][31]"
],
"triggerComponents": [
3
]
},
{
"names": [
"main.sum.out[0]",
"main.b2n.in[0]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[1]",
"main.b2n.in[1]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[2]",
"main.b2n.in[2]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[3]",
"main.b2n.in[3]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[4]",
"main.b2n.in[4]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[5]",
"main.b2n.in[5]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[6]",
"main.b2n.in[6]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[7]",
"main.b2n.in[7]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[8]",
"main.b2n.in[8]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[9]",
"main.b2n.in[9]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[10]",
"main.b2n.in[10]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[11]",
"main.b2n.in[11]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[12]",
"main.b2n.in[12]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[13]",
"main.b2n.in[13]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[14]",
"main.b2n.in[14]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[15]",
"main.b2n.in[15]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[16]",
"main.b2n.in[16]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[17]",
"main.b2n.in[17]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[18]",
"main.b2n.in[18]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[19]",
"main.b2n.in[19]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[20]",
"main.b2n.in[20]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[21]",
"main.b2n.in[21]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[22]",
"main.b2n.in[22]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[23]",
"main.b2n.in[23]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[24]",
"main.b2n.in[24]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[25]",
"main.b2n.in[25]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[26]",
"main.b2n.in[26]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[27]",
"main.b2n.in[27]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[28]",
"main.b2n.in[28]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[29]",
"main.b2n.in[29]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[30]",
"main.b2n.in[30]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[31]",
"main.b2n.in[31]"
],
"triggerComponents": [
4
]
},
{
"names": [
"main.sum.out[32]"
],
"triggerComponents": []
}
],
"constraints": [
[
{
"3": "1",
"5": "21888242871839275222246405745257275088548364400416034343698204186575808495615",
"6": "21888242871839275222246405745257275088548364400416034343698204186575808495613",
"7": "21888242871839275222246405745257275088548364400416034343698204186575808495609",
"8": "21888242871839275222246405745257275088548364400416034343698204186575808495601",
"9": "21888242871839275222246405745257275088548364400416034343698204186575808495585",
"10": "21888242871839275222246405745257275088548364400416034343698204186575808495553",
"11": "21888242871839275222246405745257275088548364400416034343698204186575808495489",
"12": "21888242871839275222246405745257275088548364400416034343698204186575808495361",
"13": "21888242871839275222246405745257275088548364400416034343698204186575808495105",
"14": "21888242871839275222246405745257275088548364400416034343698204186575808494593",
"15": "21888242871839275222246405745257275088548364400416034343698204186575808493569",
"16": "21888242871839275222246405745257275088548364400416034343698204186575808491521",
"17": "21888242871839275222246405745257275088548364400416034343698204186575808487425",
"18": "21888242871839275222246405745257275088548364400416034343698204186575808479233",
"19": "21888242871839275222246405745257275088548364400416034343698204186575808462849",
"20": "21888242871839275222246405745257275088548364400416034343698204186575808430081",
"21": "21888242871839275222246405745257275088548364400416034343698204186575808364545",
"22": "21888242871839275222246405745257275088548364400416034343698204186575808233473",
"23": "21888242871839275222246405745257275088548364400416034343698204186575807971329",
"24": "21888242871839275222246405745257275088548364400416034343698204186575807447041",
"25": "21888242871839275222246405745257275088548364400416034343698204186575806398465",
"26": "21888242871839275222246405745257275088548364400416034343698204186575804301313",
"27": "21888242871839275222246405745257275088548364400416034343698204186575800107009",
"28": "21888242871839275222246405745257275088548364400416034343698204186575791718401",
"29": "21888242871839275222246405745257275088548364400416034343698204186575774941185",
"30": "21888242871839275222246405745257275088548364400416034343698204186575741386753",
"31": "21888242871839275222246405745257275088548364400416034343698204186575674277889",
"32": "21888242871839275222246405745257275088548364400416034343698204186575540060161",
"33": "21888242871839275222246405745257275088548364400416034343698204186575271624705",
"34": "21888242871839275222246405745257275088548364400416034343698204186574734753793",
"35": "21888242871839275222246405745257275088548364400416034343698204186573661011969"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"3": "1",
"5": "21888242871839275222246405745257275088548364400416034343698204186575808495615",
"6": "21888242871839275222246405745257275088548364400416034343698204186575808495613",
"7": "21888242871839275222246405745257275088548364400416034343698204186575808495609",
"8": "21888242871839275222246405745257275088548364400416034343698204186575808495601",
"9": "21888242871839275222246405745257275088548364400416034343698204186575808495585",
"10": "21888242871839275222246405745257275088548364400416034343698204186575808495553",
"11": "21888242871839275222246405745257275088548364400416034343698204186575808495489",
"12": "21888242871839275222246405745257275088548364400416034343698204186575808495361",
"13": "21888242871839275222246405745257275088548364400416034343698204186575808495105",
"14": "21888242871839275222246405745257275088548364400416034343698204186575808494593",
"15": "21888242871839275222246405745257275088548364400416034343698204186575808493569",
"16": "21888242871839275222246405745257275088548364400416034343698204186575808491521",
"17": "21888242871839275222246405745257275088548364400416034343698204186575808487425",
"18": "21888242871839275222246405745257275088548364400416034343698204186575808479233",
"19": "21888242871839275222246405745257275088548364400416034343698204186575808462849",
"20": "21888242871839275222246405745257275088548364400416034343698204186575808430081",
"21": "21888242871839275222246405745257275088548364400416034343698204186575808364545",
"22": "21888242871839275222246405745257275088548364400416034343698204186575808233473",
"23": "21888242871839275222246405745257275088548364400416034343698204186575807971329",
"24": "21888242871839275222246405745257275088548364400416034343698204186575807447041",
"25": "21888242871839275222246405745257275088548364400416034343698204186575806398465",
"26": "21888242871839275222246405745257275088548364400416034343698204186575804301313",
"27": "21888242871839275222246405745257275088548364400416034343698204186575800107009",
"28": "21888242871839275222246405745257275088548364400416034343698204186575791718401",
"29": "21888242871839275222246405745257275088548364400416034343698204186575774941185",
"30": "21888242871839275222246405745257275088548364400416034343698204186575741386753",
"31": "21888242871839275222246405745257275088548364400416034343698204186575674277889",
"32": "21888242871839275222246405745257275088548364400416034343698204186575540060161",
"33": "21888242871839275222246405745257275088548364400416034343698204186575271624705",
"34": "21888242871839275222246405745257275088548364400416034343698204186574734753793",
"35": "21888242871839275222246405745257275088548364400416034343698204186573661011969"
},
{}
],
[
{
"5": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"5": "1"
},
{}
],
[
{
"6": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"6": "1"
},
{}
],
[
{
"7": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"7": "1"
},
{}
],
[
{
"8": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"8": "1"
},
{}
],
[
{
"9": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"9": "1"
},
{}
],
[
{
"10": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"10": "1"
},
{}
],
[
{
"11": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"11": "1"
},
{}
],
[
{
"12": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"12": "1"
},
{}
],
[
{
"13": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"13": "1"
},
{}
],
[
{
"14": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"14": "1"
},
{}
],
[
{
"15": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"15": "1"
},
{}
],
[
{
"16": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"16": "1"
},
{}
],
[
{
"17": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"17": "1"
},
{}
],
[
{
"18": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"18": "1"
},
{}
],
[
{
"19": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"19": "1"
},
{}
],
[
{
"20": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"20": "1"
},
{}
],
[
{
"21": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"21": "1"
},
{}
],
[
{
"22": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"22": "1"
},
{}
],
[
{
"23": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"23": "1"
},
{}
],
[
{
"24": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"24": "1"
},
{}
],
[
{
"25": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"25": "1"
},
{}
],
[
{
"26": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"26": "1"
},
{}
],
[
{
"27": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"27": "1"
},
{}
],
[
{
"28": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"28": "1"
},
{}
],
[
{
"29": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"29": "1"
},
{}
],
[
{
"30": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"30": "1"
},
{}
],
[
{
"31": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"31": "1"
},
{}
],
[
{
"32": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"32": "1"
},
{}
],
[
{
"33": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"33": "1"
},
{}
],
[
{
"34": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"34": "1"
},
{}
],
[
{
"35": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"35": "1"
},
{}
],
[
{
"2": "1",
"37": "21888242871839275222246405745257275088548364400416034343698204186575808495615",
"38": "21888242871839275222246405745257275088548364400416034343698204186575808495613",
"39": "21888242871839275222246405745257275088548364400416034343698204186575808495609",
"40": "21888242871839275222246405745257275088548364400416034343698204186575808495601",
"41": "21888242871839275222246405745257275088548364400416034343698204186575808495585",
"42": "21888242871839275222246405745257275088548364400416034343698204186575808495553",
"43": "21888242871839275222246405745257275088548364400416034343698204186575808495489",
"44": "21888242871839275222246405745257275088548364400416034343698204186575808495361",
"45": "21888242871839275222246405745257275088548364400416034343698204186575808495105",
"46": "21888242871839275222246405745257275088548364400416034343698204186575808494593",
"47": "21888242871839275222246405745257275088548364400416034343698204186575808493569",
"48": "21888242871839275222246405745257275088548364400416034343698204186575808491521",
"49": "21888242871839275222246405745257275088548364400416034343698204186575808487425",
"50": "21888242871839275222246405745257275088548364400416034343698204186575808479233",
"51": "21888242871839275222246405745257275088548364400416034343698204186575808462849",
"52": "21888242871839275222246405745257275088548364400416034343698204186575808430081",
"53": "21888242871839275222246405745257275088548364400416034343698204186575808364545",
"54": "21888242871839275222246405745257275088548364400416034343698204186575808233473",
"55": "21888242871839275222246405745257275088548364400416034343698204186575807971329",
"56": "21888242871839275222246405745257275088548364400416034343698204186575807447041",
"57": "21888242871839275222246405745257275088548364400416034343698204186575806398465",
"58": "21888242871839275222246405745257275088548364400416034343698204186575804301313",
"59": "21888242871839275222246405745257275088548364400416034343698204186575800107009",
"60": "21888242871839275222246405745257275088548364400416034343698204186575791718401",
"61": "21888242871839275222246405745257275088548364400416034343698204186575774941185",
"62": "21888242871839275222246405745257275088548364400416034343698204186575741386753",
"63": "21888242871839275222246405745257275088548364400416034343698204186575674277889",
"64": "21888242871839275222246405745257275088548364400416034343698204186575540060161",
"65": "21888242871839275222246405745257275088548364400416034343698204186575271624705",
"66": "21888242871839275222246405745257275088548364400416034343698204186574734753793",
"67": "21888242871839275222246405745257275088548364400416034343698204186573661011969"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"2": "1",
"37": "21888242871839275222246405745257275088548364400416034343698204186575808495615",
"38": "21888242871839275222246405745257275088548364400416034343698204186575808495613",
"39": "21888242871839275222246405745257275088548364400416034343698204186575808495609",
"40": "21888242871839275222246405745257275088548364400416034343698204186575808495601",
"41": "21888242871839275222246405745257275088548364400416034343698204186575808495585",
"42": "21888242871839275222246405745257275088548364400416034343698204186575808495553",
"43": "21888242871839275222246405745257275088548364400416034343698204186575808495489",
"44": "21888242871839275222246405745257275088548364400416034343698204186575808495361",
"45": "21888242871839275222246405745257275088548364400416034343698204186575808495105",
"46": "21888242871839275222246405745257275088548364400416034343698204186575808494593",
"47": "21888242871839275222246405745257275088548364400416034343698204186575808493569",
"48": "21888242871839275222246405745257275088548364400416034343698204186575808491521",
"49": "21888242871839275222246405745257275088548364400416034343698204186575808487425",
"50": "21888242871839275222246405745257275088548364400416034343698204186575808479233",
"51": "21888242871839275222246405745257275088548364400416034343698204186575808462849",
"52": "21888242871839275222246405745257275088548364400416034343698204186575808430081",
"53": "21888242871839275222246405745257275088548364400416034343698204186575808364545",
"54": "21888242871839275222246405745257275088548364400416034343698204186575808233473",
"55": "21888242871839275222246405745257275088548364400416034343698204186575807971329",
"56": "21888242871839275222246405745257275088548364400416034343698204186575807447041",
"57": "21888242871839275222246405745257275088548364400416034343698204186575806398465",
"58": "21888242871839275222246405745257275088548364400416034343698204186575804301313",
"59": "21888242871839275222246405745257275088548364400416034343698204186575800107009",
"60": "21888242871839275222246405745257275088548364400416034343698204186575791718401",
"61": "21888242871839275222246405745257275088548364400416034343698204186575774941185",
"62": "21888242871839275222246405745257275088548364400416034343698204186575741386753",
"63": "21888242871839275222246405745257275088548364400416034343698204186575674277889",
"64": "21888242871839275222246405745257275088548364400416034343698204186575540060161",
"65": "21888242871839275222246405745257275088548364400416034343698204186575271624705",
"66": "21888242871839275222246405745257275088548364400416034343698204186574734753793",
"67": "21888242871839275222246405745257275088548364400416034343698204186573661011969"
},
{}
],
[
{
"37": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"37": "1"
},
{}
],
[
{
"38": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"38": "1"
},
{}
],
[
{
"39": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"39": "1"
},
{}
],
[
{
"40": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"40": "1"
},
{}
],
[
{
"41": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"41": "1"
},
{}
],
[
{
"42": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"42": "1"
},
{}
],
[
{
"43": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"43": "1"
},
{}
],
[
{
"44": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"44": "1"
},
{}
],
[
{
"45": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"45": "1"
},
{}
],
[
{
"46": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"46": "1"
},
{}
],
[
{
"47": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"47": "1"
},
{}
],
[
{
"48": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"48": "1"
},
{}
],
[
{
"49": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"49": "1"
},
{}
],
[
{
"50": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"50": "1"
},
{}
],
[
{
"51": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"51": "1"
},
{}
],
[
{
"52": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"52": "1"
},
{}
],
[
{
"53": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"53": "1"
},
{}
],
[
{
"54": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"54": "1"
},
{}
],
[
{
"55": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"55": "1"
},
{}
],
[
{
"56": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"56": "1"
},
{}
],
[
{
"57": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"57": "1"
},
{}
],
[
{
"58": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"58": "1"
},
{}
],
[
{
"59": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"59": "1"
},
{}
],
[
{
"60": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"60": "1"
},
{}
],
[
{
"61": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"61": "1"
},
{}
],
[
{
"62": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"62": "1"
},
{}
],
[
{
"63": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"63": "1"
},
{}
],
[
{
"64": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"64": "1"
},
{}
],
[
{
"65": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"65": "1"
},
{}
],
[
{
"66": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"66": "1"
},
{}
],
[
{
"67": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"67": "1"
},
{}
],
[
{
"1": "1",
"69": "21888242871839275222246405745257275088548364400416034343698204186575808495615",
"70": "21888242871839275222246405745257275088548364400416034343698204186575808495613",
"71": "21888242871839275222246405745257275088548364400416034343698204186575808495609",
"72": "21888242871839275222246405745257275088548364400416034343698204186575808495601",
"73": "21888242871839275222246405745257275088548364400416034343698204186575808495585",
"74": "21888242871839275222246405745257275088548364400416034343698204186575808495553",
"75": "21888242871839275222246405745257275088548364400416034343698204186575808495489",
"76": "21888242871839275222246405745257275088548364400416034343698204186575808495361",
"77": "21888242871839275222246405745257275088548364400416034343698204186575808495105",
"78": "21888242871839275222246405745257275088548364400416034343698204186575808494593",
"79": "21888242871839275222246405745257275088548364400416034343698204186575808493569",
"80": "21888242871839275222246405745257275088548364400416034343698204186575808491521",
"81": "21888242871839275222246405745257275088548364400416034343698204186575808487425",
"82": "21888242871839275222246405745257275088548364400416034343698204186575808479233",
"83": "21888242871839275222246405745257275088548364400416034343698204186575808462849",
"84": "21888242871839275222246405745257275088548364400416034343698204186575808430081",
"85": "21888242871839275222246405745257275088548364400416034343698204186575808364545",
"86": "21888242871839275222246405745257275088548364400416034343698204186575808233473",
"87": "21888242871839275222246405745257275088548364400416034343698204186575807971329",
"88": "21888242871839275222246405745257275088548364400416034343698204186575807447041",
"89": "21888242871839275222246405745257275088548364400416034343698204186575806398465",
"90": "21888242871839275222246405745257275088548364400416034343698204186575804301313",
"91": "21888242871839275222246405745257275088548364400416034343698204186575800107009",
"92": "21888242871839275222246405745257275088548364400416034343698204186575791718401",
"93": "21888242871839275222246405745257275088548364400416034343698204186575774941185",
"94": "21888242871839275222246405745257275088548364400416034343698204186575741386753",
"95": "21888242871839275222246405745257275088548364400416034343698204186575674277889",
"96": "21888242871839275222246405745257275088548364400416034343698204186575540060161",
"97": "21888242871839275222246405745257275088548364400416034343698204186575271624705",
"98": "21888242871839275222246405745257275088548364400416034343698204186574734753793",
"99": "21888242871839275222246405745257275088548364400416034343698204186573661011969"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"1": "1",
"69": "21888242871839275222246405745257275088548364400416034343698204186575808495615",
"70": "21888242871839275222246405745257275088548364400416034343698204186575808495613",
"71": "21888242871839275222246405745257275088548364400416034343698204186575808495609",
"72": "21888242871839275222246405745257275088548364400416034343698204186575808495601",
"73": "21888242871839275222246405745257275088548364400416034343698204186575808495585",
"74": "21888242871839275222246405745257275088548364400416034343698204186575808495553",
"75": "21888242871839275222246405745257275088548364400416034343698204186575808495489",
"76": "21888242871839275222246405745257275088548364400416034343698204186575808495361",
"77": "21888242871839275222246405745257275088548364400416034343698204186575808495105",
"78": "21888242871839275222246405745257275088548364400416034343698204186575808494593",
"79": "21888242871839275222246405745257275088548364400416034343698204186575808493569",
"80": "21888242871839275222246405745257275088548364400416034343698204186575808491521",
"81": "21888242871839275222246405745257275088548364400416034343698204186575808487425",
"82": "21888242871839275222246405745257275088548364400416034343698204186575808479233",
"83": "21888242871839275222246405745257275088548364400416034343698204186575808462849",
"84": "21888242871839275222246405745257275088548364400416034343698204186575808430081",
"85": "21888242871839275222246405745257275088548364400416034343698204186575808364545",
"86": "21888242871839275222246405745257275088548364400416034343698204186575808233473",
"87": "21888242871839275222246405745257275088548364400416034343698204186575807971329",
"88": "21888242871839275222246405745257275088548364400416034343698204186575807447041",
"89": "21888242871839275222246405745257275088548364400416034343698204186575806398465",
"90": "21888242871839275222246405745257275088548364400416034343698204186575804301313",
"91": "21888242871839275222246405745257275088548364400416034343698204186575800107009",
"92": "21888242871839275222246405745257275088548364400416034343698204186575791718401",
"93": "21888242871839275222246405745257275088548364400416034343698204186575774941185",
"94": "21888242871839275222246405745257275088548364400416034343698204186575741386753",
"95": "21888242871839275222246405745257275088548364400416034343698204186575674277889",
"96": "21888242871839275222246405745257275088548364400416034343698204186575540060161",
"97": "21888242871839275222246405745257275088548364400416034343698204186575271624705",
"98": "21888242871839275222246405745257275088548364400416034343698204186574734753793",
"99": "21888242871839275222246405745257275088548364400416034343698204186573661011969"
},
{}
],
[
{
"69": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"69": "1"
},
{}
],
[
{
"70": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"70": "1"
},
{}
],
[
{
"71": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"71": "1"
},
{}
],
[
{
"72": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"72": "1"
},
{}
],
[
{
"73": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"73": "1"
},
{}
],
[
{
"74": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"74": "1"
},
{}
],
[
{
"75": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"75": "1"
},
{}
],
[
{
"76": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"76": "1"
},
{}
],
[
{
"77": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"77": "1"
},
{}
],
[
{
"78": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"78": "1"
},
{}
],
[
{
"79": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"79": "1"
},
{}
],
[
{
"80": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"80": "1"
},
{}
],
[
{
"81": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"81": "1"
},
{}
],
[
{
"82": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"82": "1"
},
{}
],
[
{
"83": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"83": "1"
},
{}
],
[
{
"84": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"84": "1"
},
{}
],
[
{
"85": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"85": "1"
},
{}
],
[
{
"86": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"86": "1"
},
{}
],
[
{
"87": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"87": "1"
},
{}
],
[
{
"88": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"88": "1"
},
{}
],
[
{
"89": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"89": "1"
},
{}
],
[
{
"90": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"90": "1"
},
{}
],
[
{
"91": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"91": "1"
},
{}
],
[
{
"92": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"92": "1"
},
{}
],
[
{
"93": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"93": "1"
},
{}
],
[
{
"94": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"94": "1"
},
{}
],
[
{
"95": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"95": "1"
},
{}
],
[
{
"96": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"96": "1"
},
{}
],
[
{
"97": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"97": "1"
},
{}
],
[
{
"98": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"98": "1"
},
{}
],
[
{
"99": "1"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"99": "1"
},
{}
],
[
{
"1": "1368015184586208377692962645747596915105636153469842199510504144919754569108",
"2": "20520227687253066844553443099509678173442728246946192144187700041656053926509",
"3": "20520227687253066844553443099509678173442728246946192144187700041656053926509"
},
{
"0": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
"1": "1368015184586208377692962645747596915105636153469842199510504144919754569108",
"2": "20520227687253066844553443099509678173442728246946192144187700041656053926509",
"3": "20520227687253066844553443099509678173442728246946192144187700041656053926509"
},
{}
]
],
"templates": {
"Num2Bits": "function Num2Bits(ctx)\n{\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[])], bigInt(bigInt(ctx.getVar(\"i\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getSignal(\"in\", [])).shr(bigInt(ctx.getVar(\"i\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\");\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n ctx.assert(ctx.getVar(\"lc1\",[]), ctx.getSignal(\"in\", []));\n}\n\n",
"Bits2Num": "function Bits2Num(ctx)\n{\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n ctx.setSignal(\"out\", [], ctx.getVar(\"lc1\",[]));\n ctx.assert(ctx.getSignal(\"out\", []), ctx.getVar(\"lc1\",[]));\n}\n\n",
"BinSum": "function BinSum(ctx)\n{\n ctx.setVar(\"nout\", [], ctx.callFunction(\"nbits\", [bigInt(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"n\",[])), __P__)).add(__P__).sub(bigInt(\"1\")).mod(__P__)).mul(bigInt(ctx.getVar(\"ops\",[]))).mod(__P__)]));\n ctx.setVar(\"lin\", [], \"0\");\n ctx.setVar(\"lout\", [], \"0\");\n for (ctx.setVar(\"k\", [], \"0\");bigInt(ctx.getVar(\"k\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0;(ctx.setVar(\"k\", [], bigInt(ctx.getVar(\"k\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n for (ctx.setVar(\"j\", [], \"0\");bigInt(ctx.getVar(\"j\",[])).lt(bigInt(ctx.getVar(\"ops\",[]))) ? 1 : 0;(ctx.setVar(\"j\", [], bigInt(ctx.getVar(\"j\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setVar(\"lin\", [], bigInt(ctx.getVar(\"lin\",[])).add(bigInt(bigInt(ctx.getSignal(\"in\", [ctx.getVar(\"j\",[]),ctx.getVar(\"k\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"k\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n }\n\n for (ctx.setVar(\"k\", [], \"0\");bigInt(ctx.getVar(\"k\",[])).lt(bigInt(ctx.getVar(\"nout\",[]))) ? 1 : 0;(ctx.setVar(\"k\", [], bigInt(ctx.getVar(\"k\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setSignal(\"out\", [ctx.getVar(\"k\",[])], bigInt(bigInt(ctx.getVar(\"k\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getVar(\"lin\",[])).shr(bigInt(ctx.getVar(\"k\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"k\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"k\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\");\n ctx.setVar(\"lout\", [], bigInt(ctx.getVar(\"lout\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"k\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"k\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n ctx.assert(ctx.getVar(\"lin\",[]), ctx.getVar(\"lout\",[]));\n}\n\n",
"A": "function A(ctx)\n{\n ctx.setPin(\"n2ba\", [], \"in\", [], ctx.getSignal(\"a\", []));\n ctx.assert(ctx.getPin(\"n2ba\", [], \"in\", []), ctx.getSignal(\"a\", []));\n ctx.setPin(\"n2bb\", [], \"in\", [], ctx.getSignal(\"b\", []));\n ctx.assert(ctx.getPin(\"n2bb\", [], \"in\", []), ctx.getSignal(\"b\", []));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"32\")) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__))\n {\n ctx.setPin(\"sum\", [], \"in\", [\"0\",ctx.getVar(\"i\",[])], ctx.getPin(\"n2ba\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.assert(ctx.getPin(\"sum\", [], \"in\", [\"0\",ctx.getVar(\"i\",[])]), ctx.getPin(\"n2ba\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"sum\", [], \"in\", [\"1\",ctx.getVar(\"i\",[])], ctx.getPin(\"n2bb\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.assert(ctx.getPin(\"sum\", [], \"in\", [\"1\",ctx.getVar(\"i\",[])]), ctx.getPin(\"n2bb\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"b2n\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getPin(\"sum\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.assert(ctx.getPin(\"b2n\", [], \"in\", [ctx.getVar(\"i\",[])]), ctx.getPin(\"sum\", [], \"out\", [ctx.getVar(\"i\",[])]));\n }\n\n ctx.setSignal(\"out\", [], ctx.getPin(\"b2n\", [], \"out\", []));\n ctx.assert(ctx.getSignal(\"out\", []), ctx.getPin(\"b2n\", [], \"out\", []));\n}\n\n"
},
"functions": {
"nbits": {
"params": [
"a"
],
"func": "function nbits(ctx) {\n ctx.setVar(\"n\", [], \"1\");\n ctx.setVar(\"r\", [], \"0\");\n while (bigInt(bigInt(ctx.getVar(\"n\",[])).add(__P__).sub(bigInt(\"1\")).mod(__P__)).lt(bigInt(ctx.getVar(\"a\",[]))) ? 1 : 0) {\n (ctx.setVar(\"r\", [], bigInt(ctx.getVar(\"r\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__);\n ctx.setVar(\"n\", [], bigInt(ctx.getVar(\"n\",[])).mul(bigInt(\"2\")).mod(__P__));\n }\n\n return ctx.getVar(\"r\",[]);;\n}\n"
}
},
"nPrvInputs": 1,
"nPubInputs": 1,
"nInputs": 2,
"nOutputs": 1,
"nVars": 101,
"nConstants": 0,
"nSignals": 101
}