diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..4005211 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,150 @@ +version: 2.0 + +workflows: + version: 2 + build_test_deploy: + jobs: + - bundle_dependencies-35: + filters: + tags: + only: /.*/ + - bundle_dependencies-36: + filters: + tags: + only: /.*/ + - bundle_dependencies-37: + filters: + tags: + only: /.*/ + - run_tests-35: + filters: + tags: + only: /.*/ + requires: + - bundle_dependencies-35 + - run_tests-36: + filters: + tags: + only: /.*/ + requires: + - bundle_dependencies-36 + - run_tests-37: + filters: + tags: + only: /.*/ + requires: + - bundle_dependencies-37 + +python_35_base: &python_35_base + working_directory: ~/numerology-35 + docker: + - image: circleci/python:3.5 + +python_36_base: &python_36_base + working_directory: ~/numerology-36 + docker: + - image: circleci/python:3.6 + +python_37_base: &python_37_base + working_directory: ~/numerology-37 + docker: + - image: circleci/python:3.7 + +jobs: + bundle_dependencies-35: + <<: *python_35_base + steps: + - checkout + - run: + name: Install Python dependencies with Pipenv + command: pipenv sync --three --dev + - run: + name: Check PEP 508 Requirements + command: pipenv check + - save_cache: + paths: + - "~/.local/share/virtualenvs/" + key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py35 + + bundle_dependencies-36: + <<: *python_36_base + steps: + - checkout + - run: + name: Install Python dependencies with Pipenv + command: pipenv sync --three --dev + - run: + name: Check PEP 508 Requirements + command: pipenv check + - save_cache: + paths: + - "~/.local/share/virtualenvs/" + key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 + + bundle_dependencies-37: + <<: *python_37_base + steps: + - checkout + - run: + name: Install Python dependencies with Pipenv + command: pipenv sync --three --dev + - run: + name: Check PEP 508 Requirements + command: pipenv check + - save_cache: + paths: + - "~/.local/share/virtualenvs/" + key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py37 + + run_tests-35: + <<: *python_35_base + steps: + - checkout + # - restore_cache: + # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py35 + - run: + name: Install dependencies + command: | + pipenv sync --three --dev + pipenv install --dev pytest + - run: + name: numerology Tests (Python 3.5) + command: pipenv run pytest --junitxml=./reports/pytest/python35-results.xml + - store_test_results: + path: /reports/pytest + - store_artifacts: + path: ./htmlcov + + run_tests-36: + <<: *python_36_base + steps: + - checkout + # - restore_cache: + # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py36 + - run: + name: Install dependencies + command: pipenv sync --three --dev + - run: + name: numerology Tests (Python 3.6) + command: pipenv run pytest --junitxml=./reports/pytest/python36-results.xml + - store_test_results: + path: /reports/pytest + - store_artifacts: + path: ./htmlcov + + run_tests-37: + <<: *python_37_base + steps: + - checkout + # - restore_cache: + # key: v2-deps-{{ .Environment.CIRCLE_WORKFLOW_ID }}-{{ checksum "Pipfile.lock" }}-py37 + - run: + name: Install dependencies + command: pipenv sync --three --dev + - run: + name: numerology Tests (Python 3.7) + command: pipenv run pytest --junitxml=./reports/pytest/python37-results.xml + - store_test_results: + path: /reports/pytest + - store_artifacts: + path: ./htmlcov diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..2b44ca0 --- /dev/null +++ b/Pipfile @@ -0,0 +1,20 @@ +[[source]] +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + +[packages] + +[dev-packages] +pytest = "*" +web3 = "*" +py-solc = "*" +#eth-tester = "*" +eth-tester = {git = "https://github.com/KPrasch/eth-tester.git", ref = "ef4bb2fa793af8aa964b83536b20f525aa74d4e4"} +py-evm = ">=0.2.0a31" + +[pipenv] +allow_prereleases = true + +[scripts] +install-solc = "./scripts/install_solc.sh" diff --git a/blockchain/__init__.py b/blockchain/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/blockchain/chains.py b/blockchain/chains.py new file mode 100644 index 0000000..17d1cdb --- /dev/null +++ b/blockchain/chains.py @@ -0,0 +1,102 @@ +from logging import getLogger +from typing import List + +from web3.contract import Contract + +from blockchain.constants import (DEVELOPMENT_ETH_AIRDROP_AMOUNT) +from blockchain.interfaces import BlockchainDeployerInterface + + +class TesterBlockchain: + """A view of a blockchain through a provided interface""" + + _instance = None + __default_interface_class = BlockchainDeployerInterface + + class ConnectionNotEstablished(RuntimeError): + pass + + def __init__(self, + interface: BlockchainDeployerInterface = None, + airdrop=True) -> None: + + self.log = getLogger("test-blockchain") # type: Logger + + # Default interface + if interface is None: + interface = self.__default_interface_class() + self.__interface = interface + + # Singleton + if self._instance is None: + TesterBlockchain._instance = self + else: + raise RuntimeError("Connection already established - Use .connect()") + + if airdrop is True: # ETH for everyone! + self.ether_airdrop(amount=DEVELOPMENT_ETH_AIRDROP_AMOUNT) + + def __repr__(self): + class_name = self.__class__.__name__ + r = "{}(interface={})" + return r.format(class_name, self.__interface) + + @property + def interface(self) -> BlockchainDeployerInterface: + return self.__interface + + def get_contract(self, name: str) -> Contract: + """ + Gets an existing contract from the registry, or raises UnknownContract + if there is no contract data available for the name/identifier. + """ + return self.__interface.get_contract_by_name(name) + + def wait_for_receipt(self, txhash: str, timeout: int = None) -> dict: + """Wait for a transaction receipt and return it""" + timeout = timeout if timeout is not None else self.interface.timeout + result = self.__interface.w3.eth.waitForTransactionReceipt(txhash, timeout=timeout) + return result + + def ether_airdrop(self, amount: int) -> List[str]: + """Airdrops ether from creator address to all other addresses!""" + + coinbase, *addresses = self.interface.w3.eth.accounts + + tx_hashes = list() + for address in addresses: + + tx = {'to': address, 'from': coinbase, 'value': amount} + txhash = self.interface.w3.eth.sendTransaction(tx) + + _receipt = self.wait_for_receipt(txhash) + tx_hashes.append(txhash) + self.log.info("Airdropped {} ETH {} -> {}".format(amount, tx['from'], tx['to'])) + + return tx_hashes + + def time_travel(self, hours: int=None, seconds: int=None): + """ + Wait the specified number of wait_hours by comparing + block timestamps and mines a single block. + """ + + more_than_one_arg = sum(map(bool, (hours, seconds))) > 1 + if more_than_one_arg: + raise ValueError("Specify hours or seconds, not a combination") + + if hours: + duration = hours * (60*60) + base = 60 * 60 + elif seconds: + duration = seconds + base = 1 + else: + raise ValueError("Specify either hours, seconds, or lock_periods.") + + now = self.interface.w3.eth.getBlock(block_identifier='latest').timestamp + end_timestamp = ((now+duration)//base) * base + + self.interface.w3.eth.web3.testing.timeTravel(timestamp=end_timestamp) + self.interface.w3.eth.web3.testing.mine(1) + self.log.info("Time traveled to {}".format(end_timestamp)) diff --git a/blockchain/compile.py b/blockchain/compile.py new file mode 100644 index 0000000..cb7aebd --- /dev/null +++ b/blockchain/compile.py @@ -0,0 +1,96 @@ +import os +from logging import getLogger +from os.path import dirname + +import itertools +import shutil +from solc import install_solc, compile_files +from solc.exceptions import SolcError +from blockchain.constants import CONTRACTS_DIR + + +class SolidityCompiler: + + __default_version = 'v0.4.25' + + __default_sol_binary_path = shutil.which('solc') + if __default_sol_binary_path is None: + __bin_path = os.path.dirname(shutil.which('python')) # type: str + __default_sol_binary_path = os.path.join(__bin_path, 'solc') # type: str + + __default_contract_dir = CONTRACTS_DIR + __default_chain_name = 'tester' + + def __init__(self, + solc_binary_path: str = None, + source_dir: str = None, + test_contract_dir: str= None + ) -> None: + + self.log = getLogger('solidity-compiler') + # Compiler binary and root solidity source code directory + self.__sol_binary_path = solc_binary_path if solc_binary_path is not None else self.__default_sol_binary_path + self.source_dir = source_dir if source_dir is not None else self.__default_contract_dir + self._test_solidity_source_dir = test_contract_dir + + # Set the local env's solidity compiler binary + os.environ['SOLC_BINARY'] = self.__sol_binary_path + + def install_compiler(self, version: str=None): + """ + Installs the specified solidity compiler version. + https://github.com/ethereum/py-solc#installing-the-solc-binary + """ + version = version if version is not None else self.__default_version + return install_solc(version, platform=None) # TODO: fix path + + def compile(self) -> dict: + """Executes the compiler with parameters specified in the json config""" + + self.log.info("Using solidity compiler binary at {}".format(self.__sol_binary_path)) + self.log.info("Compiling solidity source files at {}".format(self.source_dir)) + + source_paths = set() + source_walker = os.walk(top=self.source_dir, topdown=True) + if self._test_solidity_source_dir: + test_source_walker = os.walk(top=self._test_solidity_source_dir, topdown=True) + source_walker = itertools.chain(source_walker, test_source_walker) + + for root, dirs, files in source_walker: + for filename in files: + if filename.endswith('.sol'): + path = os.path.join(root, filename) + source_paths.add(path) + self.log.debug("Collecting solidity source {}".format(path)) + + # Compile with remappings: https://github.com/ethereum/py-solc + project_root = dirname(self.source_dir) + + remappings = ("contracts={}".format(self.source_dir), + ) + + self.log.info("Compiling with import remappings {}".format(", ".join(remappings))) + + optimization_runs = 10 # TODO: Move..? + try: + compiled_sol = compile_files(source_files=source_paths, + import_remappings=remappings, + allow_paths=project_root, + optimize=optimization_runs) + + self.log.info("Successfully compiled {} contracts with {} optimization runs".format(len(compiled_sol), + optimization_runs)) + + except FileNotFoundError: + raise RuntimeError("The solidity compiler is not at the specified path. " + "Check that the file exists and is executable.") + except PermissionError: + raise RuntimeError("The solidity compiler binary at {} is not executable. " + "Check the file's permissions.".format(self.__sol_binary_path)) + + except SolcError: + raise + + # Cleanup the compiled data keys + interfaces = {name.split(':')[-1]: compiled_sol[name] for name in compiled_sol} + return interfaces diff --git a/blockchain/constants.py b/blockchain/constants.py new file mode 100644 index 0000000..49b1fb1 --- /dev/null +++ b/blockchain/constants.py @@ -0,0 +1,17 @@ +import os +from os.path import abspath, dirname + +import blockchain + +NUCYPHER_GAS_LIMIT = 5000000 + +DEVELOPMENT_ETH_AIRDROP_AMOUNT = 10 ** 18 # wei -> ether + +DEFAULT_NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK = 10 + +# Base Filepaths +BASE_DIR = abspath(dirname(dirname(blockchain.__file__))) +CONTRACTS_DIR = os.path.join(BASE_DIR, 'numerology', 'contracts') + +# Test Constants +TEST_CONTRACTS_DIR = os.path.join(BASE_DIR, 'tests', 'contracts') diff --git a/blockchain/interfaces.py b/blockchain/interfaces.py new file mode 100644 index 0000000..414979d --- /dev/null +++ b/blockchain/interfaces.py @@ -0,0 +1,190 @@ +from logging import getLogger +from typing import Tuple + +from eth_tester import EthereumTester +from eth_tester import PyEVMBackend +from web3 import Web3 +from web3.contract import Contract +from web3.providers.eth_tester.main import EthereumTesterProvider + +from blockchain.compile import SolidityCompiler +from blockchain.constants import NUCYPHER_GAS_LIMIT +from blockchain.registry import InMemoryEthereumContractRegistry + + +class BlockchainDeployerInterface: + """ + Interacts with a solidity compiler and a registry in order to instantiate compiled + ethereum contracts with the given web3 provider backend. + """ + __default_timeout = 10 # seconds + # __default_transaction_gas_limit = 500000 # TODO: determine sensible limit and validate transactions + + class UnknownContract(Exception): + pass + + class InterfaceError(Exception): + pass + + def __init__(self, + timeout: int = None, + registry: InMemoryEthereumContractRegistry = None, + compiler: SolidityCompiler=None, + deployer_address: str = None) -> None: + + self.log = getLogger("blockchain-interface") # type: Logger + + pyevm_backend = PyEVMBackend.from_genesis_overrides(parameter_overrides={'gas_limit': NUCYPHER_GAS_LIMIT}) + eth_tester = EthereumTester(backend=pyevm_backend, auto_mine_transactions=True) + self._provider = EthereumTesterProvider(ethereum_tester=eth_tester) + providers = list() + providers.append(self._provider) + web3_instance = Web3(providers=providers) # Instantiate Web3 object with provider + self.w3 = web3_instance + + self.timeout = timeout if timeout is not None else self.__default_timeout + self.__sol_compiler = compiler + + # Setup the registry and base contract factory cache + registry = registry if registry is not None else InMemoryEthereumContractRegistry() + self.registry = registry + + interfaces = self.__sol_compiler.compile() + self.__raw_contract_cache = interfaces + + self.__deployer_address = deployer_address + + def get_contract_factory(self, contract_name: str) -> Contract: + """Retrieve compiled interface data from the cache and return web3 contract""" + try: + interface = self.__raw_contract_cache[contract_name] + except KeyError: + raise self.UnknownContract('{} is not a locally compiled contract.'.format(contract_name)) + else: + contract = self.w3.eth.contract(abi=interface['abi'], + bytecode=interface['bin'], + ContractFactoryClass=Contract) + return contract + + def _wrap_contract(self, dispatcher_contract: Contract, + target_contract: Contract, factory=Contract) -> Contract: + """Used for upgradeable contracts.""" + + # Wrap the contract + wrapped_contract = self.w3.eth.contract(abi=target_contract.abi, + address=dispatcher_contract.address, + ContractFactoryClass=factory) + return wrapped_contract + + def get_contract_by_address(self, address: str): + """Read a single contract's data from the registrar and return it.""" + try: + contract_records = self.registry.search(contract_address=address) + except RuntimeError: + raise self.InterfaceError('Corrupted Registrar') # TODO: Integrate with Registry + else: + if not contract_records: + raise self.InterfaceError("No such contract with address {}".format(address)) + return contract_records[0] + + def get_contract_by_name(self, name: str, upgradeable=False, factory=Contract) -> Contract: + """ + Instantiate a deployed contract from registrar data, + and assemble it with it's dispatcher if it is upgradeable. + """ + target_contract_records = self.registry.search(contract_name=name) + + if not target_contract_records: + raise self.InterfaceError("No such contract records with name {}".format(name)) + + if upgradeable: + # Lookup dispatchers; Search fot a published dispatcher that targets this contract record + dispatcher_records = self.registry.search(contract_name='Dispatcher') + + matching_pairs = list() + for dispatcher_name, dispatcher_addr, dispatcher_abi in dispatcher_records: + + dispatcher_contract = self.w3.eth.contract(abi=dispatcher_abi, + address=dispatcher_addr, + ContractFactoryClass=factory) + + # Read this dispatchers target address from the blockchain + live_target_address = dispatcher_contract.functions.target().call() + + for target_name, target_addr, target_abi in target_contract_records: + if target_addr == live_target_address: + pair = dispatcher_addr, target_abi + matching_pairs.append(pair) + + else: # for/else + + if len(matching_pairs) == 0: + raise self.InterfaceError("No dispatcher targets known contract records for {}".format(name)) + + elif len(matching_pairs) > 1: + raise self.InterfaceError("There is more than one dispatcher targeting {}".format(name)) + + selected_contract_address, selected_contract_abi = matching_pairs[0] + else: + if len(target_contract_records) != 1: # TODO: Allow multiple non-upgradeable records (UserEscrow) + m = "Multiple records returned from the registry for non-upgradeable contract {}" + raise self.InterfaceError(m.format(name)) + + selected_contract_name, selected_contract_address, selected_contract_abi = target_contract_records[0] + + # Create the contract from selected sources + unified_contract = self.w3.eth.contract(abi=selected_contract_abi, + address=selected_contract_address, + ContractFactoryClass=factory) + + return unified_contract + + @property + def deployer_address(self): + return self.__deployer_address + + @deployer_address.setter + def deployer_address(self, checksum_address: str) -> None: + if self.deployer_address is not None: + raise RuntimeError("{} already has a deployer address set.".format(self.__class__.__name__)) + self.__deployer_address = checksum_address + + def deploy_contract(self, contract_name: str, *args, **kwargs) -> Tuple[Contract, str]: + """ + Retrieve compiled interface data from the cache and + return an instantiated deployed contract + """ + if self.__deployer_address is None: + raise self.InterfaceError('No deployer address is configured.') + # + # Build the deployment tx # + # + + deploy_transaction = {'from': self.deployer_address, 'gasPrice': self.w3.eth.gasPrice} + self.log.info("Deployer address is {}".format(deploy_transaction['from'])) + + contract_factory = self.get_contract_factory(contract_name=contract_name) + deploy_bytecode = contract_factory.constructor(*args, **kwargs).buildTransaction(deploy_transaction) + self.log.info("Deploying contract: {}: {} bytes".format(contract_name, len(deploy_bytecode['data']))) + + # + # Transmit the deployment tx # + # + txhash = contract_factory.constructor(*args, **kwargs).transact(transaction=deploy_transaction) + self.log.info("{} Deployment TX sent : txhash {}".format(contract_name, txhash.hex())) + + # Wait for receipt + receipt = self.w3.eth.waitForTransactionReceipt(txhash) + address = receipt['contractAddress'] + self.log.info("Confirmed {} deployment: address {}".format(contract_name, address)) + + # + # Instantiate & enroll contract + # + contract = contract_factory(address=address) + + self.registry.enroll(contract_name=contract_name, + contract_address=contract.address, + contract_abi=contract_factory.abi) + + return contract, txhash diff --git a/blockchain/registry.py b/blockchain/registry.py new file mode 100644 index 0000000..7aa9967 --- /dev/null +++ b/blockchain/registry.py @@ -0,0 +1,47 @@ + + +class InMemoryEthereumContractRegistry: + + class RegistryError(Exception): + pass + + class UnknownContract(RegistryError): + pass + + class IllegalRegistrar(RegistryError): + """Raised when invalid data is encountered in the registry""" + + def __init__(self) -> None: + self._registry_data = [] + + def enroll(self, contract_name, contract_address, contract_abi): + """ + Enrolls a contract to the chain registry by writing the name, address, + and abi information to the filesystem as JSON. + + Note: Unless you are developing NuCypher, you most likely won't ever + need to use this. + """ + contract_data = [contract_name, contract_address, contract_abi] + self._registry_data.append(contract_data) + + def search(self, contract_name: str=None, contract_address: str=None): + """ + Searches the registry for a contract with the provided name or address + and returns the contracts. + """ + if not (bool(contract_name) ^ bool(contract_address)): + raise ValueError("Pass contract_name or contract_address, not both.") + + contracts = list() + for name, addr, abi in self._registry_data: + if contract_name == name or contract_address == addr: + contracts.append((name, addr, abi)) + + if not contracts: + raise self.UnknownContract + if contract_address and len(contracts) > 1: + m = "Multiple records returned for address {}" + raise self.IllegalRegistrar(m.format(contract_address)) + + return contracts if contract_name else contracts[0] diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json deleted file mode 100644 index a595647..0000000 --- a/build/contracts/Migrations.json +++ /dev/null @@ -1,1387 +0,0 @@ -{ - "contractName": "Migrations", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "last_completed_migration", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "completed", - "type": "uint256" - } - ], - "name": "setCompleted", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "new_address", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a7230582021aeb05e98ba74b671d39795d5cdaae218b4632be4fccedb3537f66097f8fdfc0029", - "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a7230582021aeb05e98ba74b671d39795d5cdaae218b4632be4fccedb3537f66097f8fdfc0029", - "sourceMap": "26:466:0:-;;;178:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;178:50:0;213:10;205:5;;:18;;;;;;;;;;;;;;;;;;26:466;;;;;;", - "deployedSourceMap": "26:466:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;332:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;332:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;74:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;74:36:0;;;;;;;;;;;;;;;;;;;;;;;50:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;232:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;232:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;332:158;387:19;161:5;;;;;;;;;;;147:19;;:10;:19;;;143:26;;;420:11;387:45;;438:8;:21;;;460:24;;438:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;438:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;438:47:0;;;;143:26;332:158;;:::o;74:36::-;;;;:::o;50:20::-;;;;;;;;;;;;;:::o;232:96::-;161:5;;;;;;;;;;;147:19;;:10;:19;;;143:26;;;314:9;287:24;:36;;;;143:26;232:96;:::o", - "source": "pragma solidity ^0.4.24;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor() public {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed) restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", - "sourcePath": "/Users/david/NuCypher/dev/numerology/contracts/Migrations.sol", - "ast": { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 56 - ] - }, - "id": 57, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:0" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 56, - "linearizedBaseContracts": [ - 56 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 3, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 56, - "src": "50:20:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "50:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5, - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "scope": 56, - "src": "74:36:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "74:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 13, - "nodeType": "Block", - "src": "137:37:0", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "147:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 8, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "147:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 9, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "161:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "147:19:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 12, - "nodeType": "IfStatement", - "src": "143:26:0", - "trueBody": { - "id": 11, - "nodeType": "PlaceholderStatement", - "src": "168:1:0" - } - } - ] - }, - "documentation": null, - "id": 14, - "name": "restricted", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 6, - "nodeType": "ParameterList", - "parameters": [], - "src": "134:2:0" - }, - "src": "115:59:0", - "visibility": "internal" - }, - { - "body": { - "id": 22, - "nodeType": "Block", - "src": "199:29:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 20, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 17, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "205:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 18, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "213:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 19, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "213:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "205:18:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 21, - "nodeType": "ExpressionStatement", - "src": "205:18:0" - } - ] - }, - "documentation": null, - "id": 23, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 15, - "nodeType": "ParameterList", - "parameters": [], - "src": "189:2:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [], - "src": "199:0:0" - }, - "scope": 56, - "src": "178:50:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 34, - "nodeType": "Block", - "src": "281:47:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 32, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 30, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "287:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 31, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "314:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "287:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33, - "nodeType": "ExpressionStatement", - "src": "287:36:0" - } - ] - }, - "documentation": null, - "id": 35, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 28, - "modifierName": { - "argumentTypes": null, - "id": 27, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "270:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "270:10:0" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 26, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 25, - "name": "completed", - "nodeType": "VariableDeclaration", - "scope": 35, - "src": "254:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 24, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "254:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "253:16:0" - }, - "payable": false, - "returnParameters": { - "id": 29, - "nodeType": "ParameterList", - "parameters": [], - "src": "281:0:0" - }, - "scope": 56, - "src": "232:96:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 54, - "nodeType": "Block", - "src": "381:109:0", - "statements": [ - { - "assignments": [ - 43 - ], - "declarations": [ - { - "constant": false, - "id": 43, - "name": "upgraded", - "nodeType": "VariableDeclaration", - "scope": 55, - "src": "387:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - }, - "typeName": { - "contractScope": null, - "id": 42, - "name": "Migrations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 56, - "src": "387:10:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 47, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 45, - "name": "new_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "420:11:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 44, - "name": "Migrations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "409:10:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$56_$", - "typeString": "type(contract Migrations)" - } - }, - "id": 46, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "409:23:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "387:45:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 51, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "460:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 48, - "name": "upgraded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "438:8:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - } - }, - "id": 50, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setCompleted", - "nodeType": "MemberAccess", - "referencedDeclaration": 35, - "src": "438:21:0", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 52, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "438:47:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 53, - "nodeType": "ExpressionStatement", - "src": "438:47:0" - } - ] - }, - "documentation": null, - "id": 55, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 40, - "modifierName": { - "argumentTypes": null, - "id": 39, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "370:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "370:10:0" - } - ], - "name": "upgrade", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 38, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 37, - "name": "new_address", - "nodeType": "VariableDeclaration", - "scope": 55, - "src": "349:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 36, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "349:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "348:21:0" - }, - "payable": false, - "returnParameters": { - "id": 41, - "nodeType": "ParameterList", - "parameters": [], - "src": "381:0:0" - }, - "scope": 56, - "src": "332:158:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 57, - "src": "26:466:0" - } - ], - "src": "0:493:0" - }, - "legacyAST": { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 56 - ] - }, - "id": 57, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:0" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 56, - "linearizedBaseContracts": [ - 56 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 3, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 56, - "src": "50:20:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "50:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5, - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "scope": 56, - "src": "74:36:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "74:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 13, - "nodeType": "Block", - "src": "137:37:0", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "147:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 8, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "147:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 9, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "161:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "147:19:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 12, - "nodeType": "IfStatement", - "src": "143:26:0", - "trueBody": { - "id": 11, - "nodeType": "PlaceholderStatement", - "src": "168:1:0" - } - } - ] - }, - "documentation": null, - "id": 14, - "name": "restricted", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 6, - "nodeType": "ParameterList", - "parameters": [], - "src": "134:2:0" - }, - "src": "115:59:0", - "visibility": "internal" - }, - { - "body": { - "id": 22, - "nodeType": "Block", - "src": "199:29:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 20, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 17, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3, - "src": "205:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 18, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2078, - "src": "213:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 19, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "213:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "205:18:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 21, - "nodeType": "ExpressionStatement", - "src": "205:18:0" - } - ] - }, - "documentation": null, - "id": 23, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 15, - "nodeType": "ParameterList", - "parameters": [], - "src": "189:2:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [], - "src": "199:0:0" - }, - "scope": 56, - "src": "178:50:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 34, - "nodeType": "Block", - "src": "281:47:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 32, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 30, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "287:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 31, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "314:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "287:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33, - "nodeType": "ExpressionStatement", - "src": "287:36:0" - } - ] - }, - "documentation": null, - "id": 35, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 28, - "modifierName": { - "argumentTypes": null, - "id": 27, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "270:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "270:10:0" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 26, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 25, - "name": "completed", - "nodeType": "VariableDeclaration", - "scope": 35, - "src": "254:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 24, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "254:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "253:16:0" - }, - "payable": false, - "returnParameters": { - "id": 29, - "nodeType": "ParameterList", - "parameters": [], - "src": "281:0:0" - }, - "scope": 56, - "src": "232:96:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 54, - "nodeType": "Block", - "src": "381:109:0", - "statements": [ - { - "assignments": [ - 43 - ], - "declarations": [ - { - "constant": false, - "id": 43, - "name": "upgraded", - "nodeType": "VariableDeclaration", - "scope": 55, - "src": "387:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - }, - "typeName": { - "contractScope": null, - "id": 42, - "name": "Migrations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 56, - "src": "387:10:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 47, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 45, - "name": "new_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "420:11:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 44, - "name": "Migrations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "409:10:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$56_$", - "typeString": "type(contract Migrations)" - } - }, - "id": 46, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "409:23:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "387:45:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 51, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5, - "src": "460:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 48, - "name": "upgraded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "438:8:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$56", - "typeString": "contract Migrations" - } - }, - "id": 50, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setCompleted", - "nodeType": "MemberAccess", - "referencedDeclaration": 35, - "src": "438:21:0", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 52, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "438:47:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 53, - "nodeType": "ExpressionStatement", - "src": "438:47:0" - } - ] - }, - "documentation": null, - "id": 55, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 40, - "modifierName": { - "argumentTypes": null, - "id": 39, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "370:10:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "370:10:0" - } - ], - "name": "upgrade", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 38, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 37, - "name": "new_address", - "nodeType": "VariableDeclaration", - "scope": 55, - "src": "349:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 36, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "349:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "348:21:0" - }, - "payable": false, - "returnParameters": { - "id": 41, - "nodeType": "ParameterList", - "parameters": [], - "src": "381:0:0" - }, - "scope": 56, - "src": "332:158:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 57, - "src": "26:466:0" - } - ], - "src": "0:493:0" - }, - "compiler": { - "name": "solc", - "version": "0.4.24+commit.e67f0147.Emscripten.clang" - }, - "networks": { - "4447": { - "events": {}, - "links": {}, - "address": "0x8f1a69555d18587277937d06a6df3c07459d1da9", - "transactionHash": "0xd67c419222cef035cfa8770769812373e3a268f0a97b6dd207b623e8857d7089" - } - }, - "schemaVersion": "2.0.1", - "updatedAt": "2018-09-10T19:54:35.099Z" -} \ No newline at end of file diff --git a/build/contracts/Numerology.json b/build/contracts/Numerology.json deleted file mode 100644 index 4b64995..0000000 --- a/build/contracts/Numerology.json +++ /dev/null @@ -1,57595 +0,0 @@ -{ - "contractName": "Numerology", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "P", - "type": "uint256[3]" - }, - { - "name": "Q", - "type": "uint256[3]" - } - ], - "name": "eq_jacobian", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "Px", - "type": "uint256" - }, - { - "name": "Py", - "type": "uint256" - } - ], - "name": "is_on_curve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6103c6610030600b82828239805160001a6073146000811461002057610022565bfe5b5030600052607381538281f3007300000000000000000000000000000000000000003014608060405260043610610063576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630bdf347714610068578063ec0a39ad146100aa575b600080fd5b6100906004803603810190808035906020019092919080359060200190929190505050610136565b604051808215151515815260200191505060405180910390f35b61011c600480360381019080806060019060038060200260405190810160405280929190826003602002808284378201915050505050919291929080606001906003806020026040519081016040528092919082600360200280828437820191505050505091929192905050506101c2565b604051808215151515815260200191505060405180910390f35b6000806000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f9250828610158061016e5750828510155b1561017c57600093506101b9565b8280151561018657fe5b85860991508280151561019557fe5b6007848015156101a157fe5b88868015156101ac57fe5b8a8b090908905080821493505b50505092915050565b6000806000806000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f945060008860026003811015156101ff57fe5b6020020151141561022857600087600260038110151561021b57fe5b602002015114955061038f565b600087600260038110151561023957fe5b6020020151141561024d576000955061038f565b8480151561025757fe5b87600260038110151561026657fe5b602002015188600260038110151561027a57fe5b60200201510993508480151561028c57fe5b88600260038110151561029b57fe5b60200201518960026003811015156102af57fe5b6020020151099250848015156102c157fe5b838860006003811015156102d157fe5b602002015109858015156102e157fe5b858a60006003811015156102f157fe5b602002015109141515610307576000955061038f565b8480151561031157fe5b87600260038110151561032057fe5b6020020151850991508480151561033357fe5b88600260038110151561034257fe5b6020020151840990508480151561035557fe5b8188600160038110151561036557fe5b6020020151098580151561037557fe5b838a600160038110151561038557fe5b6020020151091495505b5050505050929150505600a165627a7a72305820fb4c35759f7545f9fbede92a16db98edbe0a97dd3040b0a9a0e746eb5e389f010029", - "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610610063576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630bdf347714610068578063ec0a39ad146100aa575b600080fd5b6100906004803603810190808035906020019092919080359060200190929190505050610136565b604051808215151515815260200191505060405180910390f35b61011c600480360381019080806060019060038060200260405190810160405280929190826003602002808284378201915050505050919291929080606001906003806020026040519081016040528092919082600360200280828437820191505050505091929192905050506101c2565b604051808215151515815260200191505060405180910390f35b6000806000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f9250828610158061016e5750828510155b1561017c57600093506101b9565b8280151561018657fe5b85860991508280151561019557fe5b6007848015156101a157fe5b88868015156101ac57fe5b8a8b090908905080821493505b50505092915050565b6000806000806000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f945060008860026003811015156101ff57fe5b6020020151141561022857600087600260038110151561021b57fe5b602002015114955061038f565b600087600260038110151561023957fe5b6020020151141561024d576000955061038f565b8480151561025757fe5b87600260038110151561026657fe5b602002015188600260038110151561027a57fe5b60200201510993508480151561028c57fe5b88600260038110151561029b57fe5b60200201518960026003811015156102af57fe5b6020020151099250848015156102c157fe5b838860006003811015156102d157fe5b602002015109858015156102e157fe5b858a60006003811015156102f157fe5b602002015109141515610307576000955061038f565b8480151561031157fe5b87600260038110151561032057fe5b6020020151850991508480151561033357fe5b88600260038110151561034257fe5b6020020151840990508480151561035557fe5b8188600160038110151561036557fe5b6020020151098580151561037557fe5b838a600160038110151561038557fe5b6020020151091495505b5050505050929150505600a165627a7a72305820fb4c35759f7545f9fbede92a16db98edbe0a97dd3040b0a9a0e746eb5e389f010029", - "sourceMap": "162:13395:0:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24", - "deployedSourceMap": "162:13395:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13230:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:764;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13230:324;13300:4;13316:9;13409:10;13449:17;219:66;13316:23;;13360:1;13354:2;:7;;:18;;;;13371:1;13365:2;:7;;13354:18;13350:48;;;13393:5;13386:12;;;;13350:48;13437:1;13422:17;;;;;;;13433:2;13429;13422:17;13409:30;;13513:1;13469:46;;;;;;;13510:1;13506;13476:32;;;;;;;13502:2;13498:1;13483:17;;;;;;;13494:2;13490;13483:17;13476:32;13469:46;13449:66;;13538:9;13532:2;:15;13525:22;;13230:324;;;;;;;;:::o;562:764::-;645:4;660:6;919:19;972;1135:17;1193;219:66;660:20;;702:1;694;696;694:4;;;;;;;;;;;;;:9;691:170;;;733:1;725;727;725:4;;;;;;;;;;;;;:9;718:16;;;;691:170;790:1;782;784;782:4;;;;;;;;;;;;;:9;779:82;;;813:5;806:12;;;;779:82;960:1;941:21;;;;;;;954:1;956;954:4;;;;;;;;;;;;;948:1;950;948:4;;;;;;;;;;;;;941:21;919:43;;1013:1;994:21;;;;;;;1007:1;1009;1007:4;;;;;;;;;;;;;1001:1;1003;1001:4;;;;;;;;;;;;;994:21;972:43;;1087:1;1061:28;;;;;;;1074:11;1068:1;1070;1068:4;;;;;;;;;;;;;1061:28;1055:1;1029:28;;;;;;;1042:11;1036:1;1038;1036:4;;;;;;;;;;;;;1029:28;:60;;1025:100;;;1109:5;1102:12;;;;1025:100;1181:1;1155:28;;;;;;;1175:1;1177;1175:4;;;;;;;;;;;;;1162:11;1155:28;1135:48;;1239:1;1213:28;;;;;;;1233:1;1235;1233:4;;;;;;;;;;;;;1220:11;1213:28;1193:48;;1312:1;1288:26;;;;;;;1301:9;1295:1;1297;1295:4;;;;;;;;;;;;;1288:26;1282:1;1258:26;;;;;;;1271:9;1265:1;1267;1265:4;;;;;;;;;;;;;1258:26;:56;1251:63;;562:764;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.24;\n\n\n/// @title Numerology: A Solidity library for fast ECC arithmetics using curve secp256k1\n/// @author David Nuรฑez (david@nucypher.com)\nlibrary Numerology {\n\n uint256 constant field_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F;\n\n /// @notice Equality test of two points in Jacobian coordinates\n /// @param P An EC point in Jacobian coordinates\n /// @param Q An EC point in Jacobian coordinates\n /// @return true if P and Q represent the same point in affine coordinates; false otherwise\n function eq_jacobian(uint256[3] memory P, uint256[3] memory Q) pure public returns(bool){\n uint p = field_order;\n\n if(P[2] == 0){\n return Q[2] == 0; // P and Q are both zero.\n } else if(Q[2] == 0){\n return false; // Q is zero but P isn't.\n }\n\n // Now we're sure none of them is zero\n\n uint256 Q_z_squared = mulmod(Q[2], Q[2], p);\n uint256 P_z_squared = mulmod(P[2], P[2], p);\n if (mulmod(P[0], Q_z_squared, p) != mulmod(Q[0], P_z_squared, p)){\n return false;\n }\n\n uint256 Q_z_cubed = mulmod(Q_z_squared, Q[2], p);\n uint256 P_z_cubed = mulmod(P_z_squared, P[2], p);\n return mulmod(P[1], Q_z_cubed, p) == mulmod(Q[1], P_z_cubed, p);\n \n }\n\n /// @notice Addition of two points in Jacobian coordinates\n /// @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n /// @param P An EC point in Jacobian coordinates\n /// @param Q An EC point in Jacobian coordinates\n /// @return An EC point in Jacobian coordinates with the sum , represented by an array of 3 uint256\n function addJac(uint[3] memory P, uint[3] memory Q) internal constant returns (uint[3] memory R) {\n\n if(P[2] == 0){\n return Q;\n } else if(Q[2] == 0){\n return P;\n }\n\n uint256 p = field_order;\n uint256 zz1 = mulmod(P[2], P[2], p);\n uint256 zz2 = mulmod(Q[2], Q[2], p);\n uint256 a = mulmod(P[0], zz2, p);\n uint256 c = mulmod(P[1], mulmod(Q[2], zz2, p), p); \n uint256 t0 = mulmod(Q[0], zz1, p);\n uint256 t1 = mulmod(Q[1], mulmod(P[2], zz1, p), p);\n\n if ((a == t0) && (c == t1)){\n return doubleJac(P);\n }\n uint256 d = addmod(t1, p-c, p); // d = t1 - c\n uint256[3] memory b;\n b[0] = addmod(t0, p-a, p); // b = t0 - a\n b[1] = mulmod(b[0], b[0], p); // e = b^2\n b[2] = mulmod(b[1], b[0], p); // f = b^3\n uint256 g = mulmod(a, b[1], p);\n R[0] = addmod(mulmod(d, d, p), p-addmod(mulmod(2, g, p), b[2], p), p);\n R[1] = addmod(mulmod(d, addmod(g, p-R[0], p), p), p-mulmod(c, b[2], p), p);\n R[2] = mulmod(b[0], mulmod(P[2], Q[2], p), p);\n }\n\n /// @notice Addition of two points in Jacobian coordinates, placing the result in the first point\n /// @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n /// @param P An EC point in Jacobian coordinates. The result is returned here.\n /// @param Q An EC point in Jacobian coordinates\n function addJacMutates(uint[3] memory P, uint[3] memory Q) internal constant {\n\n uint256 Pz = P[2];\n uint256 Qz = Q[2];\n\n if(Pz == 0){\n P[0] = Q[0];\n P[1] = Q[1];\n P[2] = Qz;\n return;\n } else if(Qz == 0){\n return;\n }\n\n uint256 p = field_order;\n\n uint256 zz = mulmod(Pz, Pz, p);\n uint256 t0 = mulmod(Q[0], zz, p);\n uint256 t1 = mulmod(Q[1], mulmod(Pz, zz, p), p);\n\n zz = mulmod(Qz, Qz, p);\n uint256 a = mulmod(P[0], zz, p);\n uint256 c = mulmod(P[1], mulmod(Qz, zz, p), p); \n \n\n if ((a == t0) && (c == t1)){\n doubleMutates(P);\n return;\n }\n \n t1 = addmod(t1, p-c, p); // d = t1 - c\n uint256 b = addmod(t0, p-a, p); // b = t0 - a\n uint256 e = mulmod(b, b, p); // e = b^2\n t0 = mulmod(a, e, p); // t0 is actually \"g\"\n e = mulmod(e, b, p); // f = b^3 (we will re-use the variable e )\n uint256 temp = addmod(mulmod(t1, t1, p), p-addmod(mulmod(2, t0, p), e, p), p);\n P[0] = temp;\n temp = mulmod(t1, addmod(t0, p-temp, p), p);\n P[1] = addmod(temp, p-mulmod(c, e, p), p);\n P[2] = mulmod(b, mulmod(Pz, Qz, p), p);\n }\n\n /// @notice Subtraction of two points in Jacobian coordinates, placing the result in the first point\n /// @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n /// @param P An EC point in Jacobian coordinates. The result is returned here.\n /// @param Q An EC point in Jacobian coordinates\n function subJacMutates(uint[3] memory P, uint[3] memory Q) internal constant {\n\n uint256 Pz = P[2];\n uint256 Qz = Q[2];\n uint256 p = field_order;\n\n if(Pz == 0){\n P[0] = Q[0];\n P[1] = p - Q[1];\n P[2] = Qz;\n return;\n } else if(Qz == 0){\n return;\n }\n\n uint256 zz = mulmod(Pz, Pz, p);\n uint256 t0 = mulmod(Q[0], zz, p);\n uint256 t1 = mulmod(p - Q[1], mulmod(Pz, zz, p), p);\n\n zz = mulmod(Qz, Qz, p);\n uint256 a = mulmod(P[0], zz, p);\n uint256 c = mulmod(P[1], mulmod(Qz, zz, p), p); \n\n if ((a == t0) && (c == t1)){\n P[2] = 0;\n return;\n }\n \n t1 = addmod(t1, p-c, p); // d = t1 - c\n uint256 b = addmod(t0, p-a, p); // b = t0 - a\n uint256 e = mulmod(b, b, p); // e = b^2\n t0 = mulmod(a, e, p); // t0 is actually \"g\"\n e = mulmod(e, b, p); // f = b^3 (we will re-use the variable e )\n uint256 temp = addmod(mulmod(t1, t1, p), p-addmod(mulmod(2, t0, p), e, p), p);\n P[0] = temp;\n temp = mulmod(t1, addmod(t0, p-temp, p), p);\n P[1] = addmod(temp, p-mulmod(c, e, p), p);\n P[2] = mulmod(b, mulmod(Pz, Qz, p), p);\n }\n\n /// @notice Point doubling in Jacobian coordinates\n /// @param P An EC point in Jacobian coordinates. \n /// @return An EC point in Jacobian coordinates \n function doubleJac(uint[3] memory P) internal constant returns (uint[3] memory Q) {\n uint256 z = P[2];\n if (z == 0)\n return;\n uint256 p = field_order;\n uint256 x = P[0];\n uint256 _2y = mulmod(2, P[1], p);\n uint256 _4yy = mulmod(_2y, _2y, p);\n uint256 s = mulmod(_4yy, x, p);\n uint256 m = mulmod(3, mulmod(x, x, p), p);\n uint256 t = addmod(mulmod(m, m, p), mulmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d, s, p),p);\n Q[0] = t;\n Q[1] = addmod(mulmod(m, addmod(s, p - t, p), p), mulmod(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17, mulmod(_4yy, _4yy, p), p), p);\n Q[2] = mulmod(_2y, z, p);\n }\n\n /// @notice Point doubling in Jacobian coordinates, placing the result in the first point\n /// @param P An EC point in Jacobian coordinates. The result is also stored here.\n function doubleMutates(uint[3] memory P) internal constant {\n uint256 z = P[2];\n if (z == 0)\n return;\n uint256 p = field_order;\n uint256 x = P[0];\n uint256 _2y = mulmod(2, P[1], p);\n uint256 _4yy = mulmod(_2y, _2y, p);\n uint256 s = mulmod(_4yy, x, p);\n uint256 m = mulmod(3, mulmod(x, x, p), p);\n uint256 t = addmod(mulmod(m, m, p), mulmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d, s, p),p);\n P[0] = t;\n P[1] = addmod(mulmod(m, addmod(s, p - t, p), p), mulmod(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17, mulmod(_4yy, _4yy, p), p), p);\n P[2] = mulmod(_2y, z, p);\n }\n \n function _lookup_sim_mul(uint256[3][4][4] memory iP, uint256[4] memory P_Q) internal constant {\n uint256 p = field_order;\n uint256 beta = 0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee;\n\n uint256[3][4] memory iPj;\n uint256[3] memory double;\n\n // P1 Lookup Table\n iPj = iP[0];\n iPj[0] = [P_Q[0], P_Q[1], 1]; \t\t\t\t\t\t// P1\n \n double = doubleJac(iPj[0]);\n iPj[1] = addJac(double, iPj[0]);\n iPj[2] = addJac(double, iPj[1]);\n iPj[3] = addJac(double, iPj[2]);\n\n // P2 Lookup Table\n iP[1][0] = [mulmod(beta, P_Q[0], p), P_Q[1], 1];\t// P2\n\n iP[1][1] = [mulmod(beta, iPj[1][0], p), iPj[1][1], iPj[1][2]];\n iP[1][2] = [mulmod(beta, iPj[2][0], p), iPj[2][1], iPj[2][2]];\n iP[1][3] = [mulmod(beta, iPj[3][0], p), iPj[3][1], iPj[3][2]];\n\n // Q1 Lookup Table\n iPj = iP[2];\n iPj[0] = [P_Q[2], P_Q[3], 1]; \t// Q1\n\n double = doubleJac(iPj[0]);\n iPj[1] = addJac(double, iPj[0]);\n iPj[2] = addJac(double, iPj[1]);\n iPj[3] = addJac(double, iPj[2]);\n\n // Q2 Lookup Table\n iP[3][0] = [mulmod(beta, P_Q[2], p), P_Q[3], 1];\t// P2\n\n iP[3][1] = [mulmod(beta, iPj[1][0], p), iPj[1][1], iPj[1][2]];\n iP[3][2] = [mulmod(beta, iPj[2][0], p), iPj[2][1], iPj[2][2]];\n iP[3][3] = [mulmod(beta, iPj[3][0], p), iPj[3][1], iPj[3][2]];\n }\n\n /// @notice Computes the WNAF representation of an integer, and puts the resulting array of coefficients in memory\n /// @param d A 256-bit integer\n /// @return (ptr, length) The pointer to the first coefficient, and the total length of the array\n function _wnaf(int256 d) internal constant returns (uint256 ptr, uint256 length){\n \n int sign = d < 0 ? -1 : int(1);\n uint256 k = uint256(sign * d);\n\n length = 0;\n assembly\n {\n let ki := 0\n ptr := mload(0x40) // Get free memory pointer\n mstore(0x40, add(ptr, 300)) // Updates free memory pointer to +300 bytes offset\n for { } gt(k, 0) { } { // while k > 0\n if and(k, 1) { // if k is odd:\n ki := mod(k, 16)\n k := add(sub(k, ki), mul(gt(ki, 8), 16))\n // if sign = 1, store ki; if sign = -1, store 16 - ki\n mstore8(add(ptr, length), add(mul(ki, sign), sub(8, mul(sign, 8))))\n }\n length := add(length, 1)\n k := div(k, 2)\n }\n //log3(ptr, 1, 0xfabadaacabada, d, length) \n }\n\n return (ptr, length);\n }\n\n /// @notice Simultaneous multiplication of the form kP + lQ. \n /// @dev Scalars k and l are expected to be decomposed such that k = k1 + k2 ฮป, and l = l1 + l2 ฮป,\n /// where ฮป is specific to the endomorphism of the curve\n /// @param k_l An array with the decomposition of k and l values, i.e., [k1, k2, l1, l2]\n /// @param P_Q An array with the affine coordinates of both P and Q, i.e., [P1, P2, Q1, Q2]\n function _sim_mul(int256[4] memory k_l, uint256[4] memory P_Q) internal constant returns (uint[3] memory Q) {\n\n \trequire(is_on_curve(P_Q[0], P_Q[1]) && is_on_curve(P_Q[2], P_Q[3]), \"Invalid points\");\n\n uint256[4] memory wnaf;\n uint256 max_count = 0;\n uint256 count = 0; \n\n for(uint j=0; j<4; j++){\n (wnaf[j], count) = _wnaf(k_l[j]);\n if(count > max_count){\n max_count = count;\n }\n }\n\n Q = _sim_mul_wnaf(wnaf, max_count, P_Q);\n }\n\n \n function _sim_mul_wnaf(uint256[4] memory wnaf_ptr, uint256 length, uint256[4] memory P_Q) internal constant returns (uint[3] memory Q) {\n uint256[3][4][4] memory iP;\n _lookup_sim_mul(iP, P_Q);\n\n // LOOP \n uint256 i = length;\n uint256 ki;\n uint256 ptr;\n while(i > 0) {\n i--;\n\n doubleMutates(Q);\n\n ptr = wnaf_ptr[0] + i;\n assembly {\n ki := byte(0, mload(ptr))\n }\n\n if (ki > 8) {\n subJacMutates(Q, iP[0][(15 - ki) / 2]);\n } else if (ki > 0) {\n addJacMutates(Q, iP[0][(ki - 1) / 2]);\n }\n\n ptr = wnaf_ptr[1] + i;\n assembly {\n ki := byte(0, mload(ptr))\n }\n\n if (ki > 8) {\n subJacMutates(Q, iP[1][(15 - ki) / 2]);\n } else if (ki > 0) {\n addJacMutates(Q, iP[1][(ki - 1) / 2]);\n } \n\n ptr = wnaf_ptr[2] + i;\n assembly {\n ki := byte(0, mload(ptr))\n }\n\n if (ki > 8) {\n subJacMutates(Q, iP[2][(15 - ki) / 2]);\n } else if (ki > 0) {\n addJacMutates(Q, iP[2][(ki - 1) / 2]);\n } \n\n ptr = wnaf_ptr[3] + i;\n assembly {\n ki := byte(0, mload(ptr))\n }\n\n if (ki > 8) {\n subJacMutates(Q, iP[3][(15 - ki) / 2]);\n } else if (ki > 0) {\n addJacMutates(Q, iP[3][(ki - 1) / 2]);\n } \n \n }\n }\n\n function is_on_curve(uint256 Px, uint256 Py) public constant returns (bool) {\n uint256 p = field_order;\n\n if (Px >= p || Py >= p)\n return false;\n\n uint256 y2 = mulmod(Py, Py, p);\n uint256 x3_plus_7 = addmod(mulmod(mulmod(Px, Px, p), Px, p), 7, p);\n return y2 == x3_plus_7;\n }\n\n}", - "sourcePath": "/Users/david/NuCypher/dev/numerology/contracts/Numerology.sol", - "ast": { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/Numerology.sol", - "exportedSymbols": { - "Numerology": [ - 1959 - ] - }, - "id": 1960, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:0" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Numerology: A Solidity library for fast ECC arithmetics using curve secp256k1\n @author David Nuรฑez (david@nucypher.com)", - "fullyImplemented": true, - "id": 1959, - "linearizedBaseContracts": [ - 1959 - ], - "name": "Numerology", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 4, - "name": "field_order", - "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "188:97:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "188:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646454646464646433246", - "id": 3, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "219:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671663_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1663" - }, - "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F" - }, - "visibility": "internal" - }, - { - "body": { - "id": 122, - "nodeType": "Block", - "src": "650:676:0", - "statements": [ - { - "assignments": [ - 18 - ], - "declarations": [ - { - "constant": false, - "id": 18, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "660:6:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 17, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "660:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 20, - "initialValue": { - "argumentTypes": null, - "id": 19, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "669:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "660:20:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 25, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 21, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "694:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 23, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 22, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "696:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "694:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 24, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "702:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "694:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 37, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 33, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "782:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 35, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 34, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "784:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "782:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 36, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "790:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "782:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 41, - "nodeType": "IfStatement", - "src": "779:82:0", - "trueBody": { - "id": 40, - "nodeType": "Block", - "src": "792:69:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 38, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "813:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 16, - "id": 39, - "nodeType": "Return", - "src": "806:12:0" - } - ] - } - }, - "id": 42, - "nodeType": "IfStatement", - "src": "691:170:0", - "trueBody": { - "id": 32, - "nodeType": "Block", - "src": "704:69:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 26, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "725:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 28, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "727:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "725:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 29, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "733:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "725:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 16, - "id": 31, - "nodeType": "Return", - "src": "718:16:0" - } - ] - } - }, - { - "assignments": [ - 44 - ], - "declarations": [ - { - "constant": false, - "id": 44, - "name": "Q_z_squared", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "919:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 43, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "919:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 54, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 46, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "948:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 48, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 47, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "950:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "948:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 49, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "954:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 51, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 50, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "956:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "954:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 52, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "960:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 45, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "941:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 53, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "941:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "919:43:0" - }, - { - "assignments": [ - 56 - ], - "declarations": [ - { - "constant": false, - "id": 56, - "name": "P_z_squared", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "972:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 55, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "972:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 66, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 58, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1001:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 60, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 59, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1003:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1001:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 61, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1007:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 63, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 62, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1009:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1007:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 64, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 57, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "994:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "994:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "972:43:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 81, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 68, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1036:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 70, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1038:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1036:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 71, - "name": "Q_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "1042:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 72, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1055:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 67, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1029:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 73, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1029:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 75, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1068:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 77, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 76, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1070:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1068:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 78, - "name": "P_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "1074:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 79, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1087:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 74, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1061:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 80, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1061:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1029:60:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 85, - "nodeType": "IfStatement", - "src": "1025:100:0", - "trueBody": { - "id": 84, - "nodeType": "Block", - "src": "1090:35:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 82, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1109:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 16, - "id": 83, - "nodeType": "Return", - "src": "1102:12:0" - } - ] - } - }, - { - "assignments": [ - 87 - ], - "declarations": [ - { - "constant": false, - "id": 87, - "name": "Q_z_cubed", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "1135:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 86, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1135:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 95, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 89, - "name": "Q_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "1162:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 90, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1175:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 92, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 91, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1177:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1175:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1181:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 88, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1155:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1155:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1135:48:0" - }, - { - "assignments": [ - 97 - ], - "declarations": [ - { - "constant": false, - "id": 97, - "name": "P_z_cubed", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "1193:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 96, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1193:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 105, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 99, - "name": "P_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "1220:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 100, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1233:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 102, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1235:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1233:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 103, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1239:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 98, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1213:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1213:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1193:48:0" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 107, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1265:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 109, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 108, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1267:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1265:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 110, - "name": "Q_z_cubed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1271:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 111, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1282:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 106, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1258:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1258:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 114, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1295:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 116, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 115, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1297:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1295:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 117, - "name": "P_z_cubed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "1301:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 118, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1312:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 113, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1288:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1288:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1258:56:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 16, - "id": 121, - "nodeType": "Return", - "src": "1251:63:0" - } - ] - }, - "documentation": "@notice Equality test of two points in Jacobian coordinates\n @param P An EC point in Jacobian coordinates\n @param Q An EC point in Jacobian coordinates\n @return true if P and Q represent the same point in affine coordinates; false otherwise", - "id": 123, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "eq_jacobian", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 13, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "583:19:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 5, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "583:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 6, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "591:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "583:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "604:19:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "604:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "612:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "604:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "582:42:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 15, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "645:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 14, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "645:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "644:6:0" - }, - "scope": 1959, - "src": "562:764:0", - "stateMutability": "pure", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 393, - "nodeType": "Block", - "src": "1840:1024:0", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 138, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1854:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 140, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1856:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1854:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 141, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1862:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1854:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 146, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1906:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 148, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 147, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1908:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1906:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1914:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1906:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 154, - "nodeType": "IfStatement", - "src": "1903:46:0", - "trueBody": { - "id": 153, - "nodeType": "Block", - "src": "1916:33:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 151, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1937:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "functionReturnParameters": 137, - "id": 152, - "nodeType": "Return", - "src": "1930:8:0" - } - ] - } - }, - "id": 155, - "nodeType": "IfStatement", - "src": "1851:98:0", - "trueBody": { - "id": 145, - "nodeType": "Block", - "src": "1864:33:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 143, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1885:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "functionReturnParameters": 137, - "id": 144, - "nodeType": "Return", - "src": "1878:8:0" - } - ] - } - }, - { - "assignments": [ - 157 - ], - "declarations": [ - { - "constant": false, - "id": 157, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1959:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 156, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1959:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 159, - "initialValue": { - "argumentTypes": null, - "id": 158, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "1971:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1959:23:0" - }, - { - "assignments": [ - 161 - ], - "declarations": [ - { - "constant": false, - "id": 161, - "name": "zz1", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1992:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 160, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1992:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 171, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 163, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 165, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2015:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2013:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 166, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2019:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 168, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 167, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2021:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2019:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 169, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2025:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 162, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2006:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2006:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1992:35:0" - }, - { - "assignments": [ - 173 - ], - "declarations": [ - { - "constant": false, - "id": 173, - "name": "zz2", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2037:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2037:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 183, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 175, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2058:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 177, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2060:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2058:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 178, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2064:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 180, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 179, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2066:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2064:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2070:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 174, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2051:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2051:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2037:35:0" - }, - { - "assignments": [ - 185 - ], - "declarations": [ - { - "constant": false, - "id": 185, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2082:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 184, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2082:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 193, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 187, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2103:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 189, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 188, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2105:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2103:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 190, - "name": "zz2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2109:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 191, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2114:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 186, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2096:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2096:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2082:34:0" - }, - { - "assignments": [ - 195 - ], - "declarations": [ - { - "constant": false, - "id": 195, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2126:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 194, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2126:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 209, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 197, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2147:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 199, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2149:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2147:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 201, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2160:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 203, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2162:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2160:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 204, - "name": "zz2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2166:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 205, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2171:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 200, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2153:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2153:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 207, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2175:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 196, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2140:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2140:37:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2126:51:0" - }, - { - "assignments": [ - 211 - ], - "declarations": [ - { - "constant": false, - "id": 211, - "name": "t0", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2190:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2190:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 219, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 213, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2211:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 215, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2213:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2211:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 216, - "name": "zz1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "2217:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 217, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2222:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 212, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2204:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2204:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2190:34:0" - }, - { - "assignments": [ - 221 - ], - "declarations": [ - { - "constant": false, - "id": 221, - "name": "t1", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2234:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 220, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2234:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 235, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2255:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2257:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2255:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 227, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2268:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 229, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2270:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2268:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 230, - "name": "zz1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "2274:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 231, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2279:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 226, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2261:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2261:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 233, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2283:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 222, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2248:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2248:37:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2234:51:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 236, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "2301:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 237, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "2306:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2301:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 239, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2300:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 240, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 195, - "src": "2314:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 241, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2319:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2314:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 243, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2313:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2300:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 250, - "nodeType": "IfStatement", - "src": "2296:71:0", - "trueBody": { - "id": 249, - "nodeType": "Block", - "src": "2323:44:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 246, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2354:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "id": 245, - "name": "doubleJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1047, - "src": "2344:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2344:12:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "functionReturnParameters": 137, - "id": 248, - "nodeType": "Return", - "src": "2337:19:0" - } - ] - } - }, - { - "assignments": [ - 252 - ], - "declarations": [ - { - "constant": false, - "id": 252, - "name": "d", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2376:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2376:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 260, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 254, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2397:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 255, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2401:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 256, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 195, - "src": "2403:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2401:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 258, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2406:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 253, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2390:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 259, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2390:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2376:32:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 265, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2432:19:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 263, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2432:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 264, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2440:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "2432:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 266, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2432:19:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 267, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2461:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 269, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2463:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2461:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 271, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "2475:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 272, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2479:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 273, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "2481:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2479:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 275, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2484:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 270, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2468:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2468:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2461:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 278, - "nodeType": "ExpressionStatement", - "src": "2461:25:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 279, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2510:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 281, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 280, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2512:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2510:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 283, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2524:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 285, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2526:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2524:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 286, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2530:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 288, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2532:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2530:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 289, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2536:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 282, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2517:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2517:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2510:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 292, - "nodeType": "ExpressionStatement", - "src": "2510:28:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 293, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2559:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 295, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 294, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2561:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2559:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 297, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2573:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 299, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2575:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2573:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 300, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2579:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 302, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 301, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2581:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2579:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 303, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2585:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 296, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2566:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2566:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2559:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "2559:28:0" - }, - { - "assignments": [ - 308 - ], - "declarations": [ - { - "constant": false, - "id": 308, - "name": "g", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2609:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 307, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2609:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 316, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 310, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "2628:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 311, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2631:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 313, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 312, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2633:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2631:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 314, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2637:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 309, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2621:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2621:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2609:30:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 317, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2649:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 319, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2651:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2649:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 322, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "2670:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 323, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "2673:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 324, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2676:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 321, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2663:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2663:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 326, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2680:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 329, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2696:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "id": 330, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "2699:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 331, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2702:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 328, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2689:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 332, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2689:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 333, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2706:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 335, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 334, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2708:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2706:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 336, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2712:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 327, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2682:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 337, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2682:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2680:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 339, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2716:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 320, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2656:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2656:62:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2649:69:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 342, - "nodeType": "ExpressionStatement", - "src": "2649:69:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 343, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2728:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 345, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2730:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2728:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 348, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "2749:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 350, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "2759:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 351, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2762:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 352, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2764:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 354, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2766:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2764:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2762:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 356, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2770:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 349, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2752:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2752:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 358, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2774:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 347, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2742:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2742:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 360, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2778:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 362, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 195, - "src": "2787:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 363, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2790:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 365, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 364, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2792:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2790:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 366, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2796:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 361, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2780:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2780:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2778:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 369, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2800:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 346, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2735:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 370, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2735:67:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2728:74:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 372, - "nodeType": "ExpressionStatement", - "src": "2728:74:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 373, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2812:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 375, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 374, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2814:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2812:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 377, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2826:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 379, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2828:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2826:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 381, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2839:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 383, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2841:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2839:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 384, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2845:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 386, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 385, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2847:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2845:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 387, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2851:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 380, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2832:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2832:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 389, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2855:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 376, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2819:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 390, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2819:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2812:45:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 392, - "nodeType": "ExpressionStatement", - "src": "2812:45:0" - } - ] - }, - "documentation": "@notice Addition of two points in Jacobian coordinates\n @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n @param P An EC point in Jacobian coordinates\n @param Q An EC point in Jacobian coordinates\n @return An EC point in Jacobian coordinates with the sum , represented by an array of 3 uint256", - "id": 394, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "addJac", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 132, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 127, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1759:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 124, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1759:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 126, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1764:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1759:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 131, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1777:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 128, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1777:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 130, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 129, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1782:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1777:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1758:36:0" - }, - "payable": false, - "returnParameters": { - "id": 137, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 136, - "name": "R", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1822:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 133, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1822:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 135, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1827:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1822:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1821:18:0" - }, - "scope": 1959, - "src": "1743:1121:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 651, - "nodeType": "Block", - "src": "3323:1205:0", - "statements": [ - { - "assignments": [ - 406 - ], - "declarations": [ - { - "constant": false, - "id": 406, - "name": "Pz", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3334:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 405, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3334:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 410, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 407, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3347:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 409, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3349:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3347:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3334:17:0" - }, - { - "assignments": [ - 412 - ], - "declarations": [ - { - "constant": false, - "id": 412, - "name": "Qz", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3361:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 411, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3361:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 416, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3374:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 414, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3376:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3374:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3361:17:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 419, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 417, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3392:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 418, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3398:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3392:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 444, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3513:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3519:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3513:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 449, - "nodeType": "IfStatement", - "src": "3510:42:0", - "trueBody": { - "id": 448, - "nodeType": "Block", - "src": "3521:31:0", - "statements": [ - { - "expression": null, - "functionReturnParameters": 404, - "id": 447, - "nodeType": "Return", - "src": "3535:7:0" - } - ] - } - }, - "id": 450, - "nodeType": "IfStatement", - "src": "3389:163:0", - "trueBody": { - "id": 443, - "nodeType": "Block", - "src": "3400:104:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 426, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 420, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3414:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 422, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 421, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3416:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3414:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 423, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3421:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 425, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3423:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3421:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3414:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 427, - "nodeType": "ExpressionStatement", - "src": "3414:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 428, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3439:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 430, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3441:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3439:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 431, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3446:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 433, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3448:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3446:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3439:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 435, - "nodeType": "ExpressionStatement", - "src": "3439:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 436, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3464:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 438, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 437, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3466:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3464:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 439, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3471:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3464:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 441, - "nodeType": "ExpressionStatement", - "src": "3464:9:0" - }, - { - "expression": null, - "functionReturnParameters": 404, - "id": 442, - "nodeType": "Return", - "src": "3487:7:0" - } - ] - } - }, - { - "assignments": [ - 452 - ], - "declarations": [ - { - "constant": false, - "id": 452, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3562:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3562:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 454, - "initialValue": { - "argumentTypes": null, - "id": 453, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "3574:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3562:23:0" - }, - { - "assignments": [ - 456 - ], - "declarations": [ - { - "constant": false, - "id": 456, - "name": "zz", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3596:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 455, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3596:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 462, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 458, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3616:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 459, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3620:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 460, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3624:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 457, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3609:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3609:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3596:30:0" - }, - { - "assignments": [ - 464 - ], - "declarations": [ - { - "constant": false, - "id": 464, - "name": "t0", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3636:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3636:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 472, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 466, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3657:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 468, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3659:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3657:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 469, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3663:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 470, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3667:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 465, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3650:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3650:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3636:33:0" - }, - { - "assignments": [ - 474 - ], - "declarations": [ - { - "constant": false, - "id": 474, - "name": "t1", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3679:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 473, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3679:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 486, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 476, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3700:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 478, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3702:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3700:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 480, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3713:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 481, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3717:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 482, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3721:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 479, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3706:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3706:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3725:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 475, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3693:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 485, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3693:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3679:48:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 487, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3738:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 489, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3750:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 490, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3754:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 491, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3758:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 488, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3743:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3743:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3738:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "3738:22:0" - }, - { - "assignments": [ - 496 - ], - "declarations": [ - { - "constant": false, - "id": 496, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3770:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 495, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3770:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 504, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 498, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3791:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 500, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 499, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3793:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3791:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 501, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3797:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 502, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3801:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 497, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3784:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3784:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3770:33:0" - }, - { - "assignments": [ - 506 - ], - "declarations": [ - { - "constant": false, - "id": 506, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3813:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 505, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3813:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 518, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 508, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3834:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 510, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3836:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3834:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 512, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3847:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 513, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3851:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 514, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3855:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 511, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3840:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3840:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 516, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3859:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 507, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3827:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3827:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3813:48:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 519, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "3889:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 520, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "3894:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3889:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 522, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3888:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 525, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 523, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "3902:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 524, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "3907:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3902:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 526, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3901:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3888:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 534, - "nodeType": "IfStatement", - "src": "3884:88:0", - "trueBody": { - "id": 533, - "nodeType": "Block", - "src": "3911:61:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 529, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3939:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "id": 528, - "name": "doubleMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1174, - "src": "3925:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory) view" - } - }, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3925:16:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 531, - "nodeType": "ExpressionStatement", - "src": "3925:16:0" - }, - { - "expression": null, - "functionReturnParameters": 404, - "id": 532, - "nodeType": "Return", - "src": "3955:7:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 535, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "3990:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 537, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4004:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 538, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4008:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 539, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "4010:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4008:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 536, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "3997:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3997:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3990:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 544, - "nodeType": "ExpressionStatement", - "src": "3990:25:0" - }, - { - "assignments": [ - 546 - ], - "declarations": [ - { - "constant": false, - "id": 546, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "4039:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 545, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4039:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 548, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4058:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 549, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4062:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 550, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "4064:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4062:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 552, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4067:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 547, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4051:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4051:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4039:30:0" - }, - { - "assignments": [ - 556 - ], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "e", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "4093:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4093:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 562, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 558, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4112:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 559, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4115:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 560, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4118:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 557, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4105:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 561, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4105:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4093:27:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 563, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4141:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 565, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "4153:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 566, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4156:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 567, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4159:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 564, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4146:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4146:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4141:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 570, - "nodeType": "ExpressionStatement", - "src": "4141:20:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 571, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4196:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 573, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4207:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 574, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4210:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 575, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4213:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 572, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4200:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4200:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4196:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 578, - "nodeType": "ExpressionStatement", - "src": "4196:19:0" - }, - { - "assignments": [ - 580 - ], - "declarations": [ - { - "constant": false, - "id": 580, - "name": "temp", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "4271:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 579, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4271:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 600, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 583, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4300:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 584, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4304:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 585, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4308:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 582, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4293:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4293:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 587, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4312:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 590, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4328:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "id": 591, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4331:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 592, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4335:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 589, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4321:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4321:16:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 594, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4339:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 595, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4342:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 588, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4314:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4314:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4312:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 598, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4346:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 581, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4286:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4286:62:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4271:77:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 601, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "4358:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 603, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 602, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4360:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4358:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 604, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4365:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4358:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 606, - "nodeType": "ExpressionStatement", - "src": "4358:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 607, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4379:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 609, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4393:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 611, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4404:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 612, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4408:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 613, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4410:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4408:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 615, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4416:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 610, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4397:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4397:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 617, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4420:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 608, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4386:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4386:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4379:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 620, - "nodeType": "ExpressionStatement", - "src": "4379:43:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 621, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "4432:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 623, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 622, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4434:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4432:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 625, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4446:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 626, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4452:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 628, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "4461:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 629, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4464:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 630, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4467:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 627, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4454:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4454:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4452:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 633, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4471:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 624, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4439:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4439:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4432:41:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 636, - "nodeType": "ExpressionStatement", - "src": "4432:41:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 637, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "4483:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 639, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 638, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4485:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4483:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 641, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4497:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 643, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "4507:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 644, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4511:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 645, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4515:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 642, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4500:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4500:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 647, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4519:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 640, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4490:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4490:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4483:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 650, - "nodeType": "ExpressionStatement", - "src": "4483:38:0" - } - ] - }, - "documentation": "@notice Addition of two points in Jacobian coordinates, placing the result in the first point\n @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n @param P An EC point in Jacobian coordinates. The result is returned here.\n @param Q An EC point in Jacobian coordinates", - "id": 652, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "addJacMutates", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 403, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 398, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3269:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 395, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3269:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 397, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3274:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "3269:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 402, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3287:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 399, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3287:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 401, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3292:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "3287:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3268:36:0" - }, - "payable": false, - "returnParameters": { - "id": 404, - "nodeType": "ParameterList", - "parameters": [], - "src": "3323:0:0" - }, - "scope": 1959, - "src": "3246:1282:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 915, - "nodeType": "Block", - "src": "4990:1193:0", - "statements": [ - { - "assignments": [ - 664 - ], - "declarations": [ - { - "constant": false, - "id": 664, - "name": "Pz", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5001:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 663, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5001:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 668, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 665, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5014:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 667, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5016:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5014:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5001:17:0" - }, - { - "assignments": [ - 670 - ], - "declarations": [ - { - "constant": false, - "id": 670, - "name": "Qz", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5028:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 669, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5028:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 674, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5041:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 673, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 672, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5043:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5041:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5028:17:0" - }, - { - "assignments": [ - 676 - ], - "declarations": [ - { - "constant": false, - "id": 676, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5055:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 675, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5055:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 678, - "initialValue": { - "argumentTypes": null, - "id": 677, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "5067:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5055:23:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 679, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5092:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5098:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5092:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 708, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5217:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 709, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5223:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5217:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 713, - "nodeType": "IfStatement", - "src": "5214:42:0", - "trueBody": { - "id": 712, - "nodeType": "Block", - "src": "5225:31:0", - "statements": [ - { - "expression": null, - "functionReturnParameters": 662, - "id": 711, - "nodeType": "Return", - "src": "5239:7:0" - } - ] - } - }, - "id": 714, - "nodeType": "IfStatement", - "src": "5089:167:0", - "trueBody": { - "id": 707, - "nodeType": "Block", - "src": "5100:108:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 682, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5114:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 684, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 683, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5116:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5114:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 685, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5121:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 687, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5123:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5121:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5114:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "5114:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 698, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 690, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5139:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 692, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 691, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5141:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5139:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 693, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5146:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 694, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5150:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 696, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5152:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5150:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5146:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5139:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 699, - "nodeType": "ExpressionStatement", - "src": "5139:15:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 704, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 700, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5168:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 702, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 701, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5170:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5168:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 703, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5175:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5168:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 705, - "nodeType": "ExpressionStatement", - "src": "5168:9:0" - }, - { - "expression": null, - "functionReturnParameters": 662, - "id": 706, - "nodeType": "Return", - "src": "5191:7:0" - } - ] - } - }, - { - "assignments": [ - 716 - ], - "declarations": [ - { - "constant": false, - "id": 716, - "name": "zz", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5266:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 715, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5266:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 722, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 718, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5286:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 719, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5290:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 720, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5294:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 717, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5279:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5279:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5266:30:0" - }, - { - "assignments": [ - 724 - ], - "declarations": [ - { - "constant": false, - "id": 724, - "name": "t0", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5306:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 723, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5306:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 732, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 726, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5327:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 728, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5329:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5327:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 729, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5333:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 730, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5337:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 725, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5320:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5320:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5306:33:0" - }, - { - "assignments": [ - 734 - ], - "declarations": [ - { - "constant": false, - "id": 734, - "name": "t1", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5349:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 733, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5349:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 748, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 736, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5370:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 737, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5374:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 739, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5376:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5374:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5370:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 742, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5387:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 743, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5391:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 744, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5395:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 741, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5380:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5380:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 746, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5399:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 735, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5363:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5363:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5349:52:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 749, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5412:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 751, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5424:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 752, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5428:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 753, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5432:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 750, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5417:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5417:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5412:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 756, - "nodeType": "ExpressionStatement", - "src": "5412:22:0" - }, - { - "assignments": [ - 758 - ], - "declarations": [ - { - "constant": false, - "id": 758, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5444:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 757, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5444:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 766, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 760, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5465:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 762, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5467:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5465:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 763, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5471:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 764, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5475:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 759, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5458:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5458:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5444:33:0" - }, - { - "assignments": [ - 768 - ], - "declarations": [ - { - "constant": false, - "id": 768, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5487:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 767, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5487:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 780, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 770, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5508:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 772, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 771, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5510:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5508:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5521:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 775, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5525:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 776, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5529:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 773, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5514:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5514:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 778, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5533:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 769, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5501:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5501:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5487:48:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 781, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "5552:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 782, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5557:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5552:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 784, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5551:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 785, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "5565:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 786, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5570:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5565:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 788, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5564:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5551:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 798, - "nodeType": "IfStatement", - "src": "5547:80:0", - "trueBody": { - "id": 797, - "nodeType": "Block", - "src": "5574:53:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 794, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 790, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5588:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 792, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5590:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5588:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 793, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5595:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5588:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 795, - "nodeType": "ExpressionStatement", - "src": "5588:8:0" - }, - { - "expression": null, - "functionReturnParameters": 662, - "id": 796, - "nodeType": "Return", - "src": "5610:7:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 799, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5645:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 801, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5659:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 802, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5663:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 803, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "5665:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5663:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 805, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5668:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 800, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5652:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5652:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5645:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 808, - "nodeType": "ExpressionStatement", - "src": "5645:25:0" - }, - { - "assignments": [ - 810 - ], - "declarations": [ - { - "constant": false, - "id": 810, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5694:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 809, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5694:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 818, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 812, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5713:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 813, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5717:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 814, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "5719:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5717:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 816, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5722:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 811, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5706:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5706:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5694:30:0" - }, - { - "assignments": [ - 820 - ], - "declarations": [ - { - "constant": false, - "id": 820, - "name": "e", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5748:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 819, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5748:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 826, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 822, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "5767:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 823, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "5770:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 824, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5773:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 821, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5760:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5760:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5748:27:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 827, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5796:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 829, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "5808:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 830, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5811:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 831, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5814:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 828, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5801:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5801:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5796:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 834, - "nodeType": "ExpressionStatement", - "src": "5796:20:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 835, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5851:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 837, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5862:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 838, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "5865:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 839, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5868:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 836, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5855:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5855:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5851:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 842, - "nodeType": "ExpressionStatement", - "src": "5851:19:0" - }, - { - "assignments": [ - 844 - ], - "declarations": [ - { - "constant": false, - "id": 844, - "name": "temp", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5926:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 843, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5926:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 864, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 847, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5955:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5959:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 849, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5963:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 846, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5948:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 850, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5948:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 851, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5967:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5983:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "id": 855, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5986:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 856, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5990:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 853, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5976:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 857, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5976:16:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 858, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5994:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 859, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5997:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 852, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5969:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 860, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5969:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5967:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 862, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6001:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 845, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5941:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5941:62:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5926:77:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 869, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 865, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "6013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 867, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 866, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6015:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6013:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 868, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6020:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6013:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 870, - "nodeType": "ExpressionStatement", - "src": "6013:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 871, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6034:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 873, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "6048:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 875, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "6059:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 878, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 876, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6063:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 877, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6065:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6063:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 879, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6071:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 874, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6052:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 880, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6052:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 881, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6075:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 872, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6041:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 882, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6041:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6034:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 884, - "nodeType": "ExpressionStatement", - "src": "6034:43:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 885, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "6087:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 887, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6089:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6087:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 889, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6101:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 890, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6107:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 892, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "6116:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 893, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "6119:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 894, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6122:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 891, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6109:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6109:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6107:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 897, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6126:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 888, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6094:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6094:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6087:41:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 900, - "nodeType": "ExpressionStatement", - "src": "6087:41:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 901, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "6138:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 903, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 902, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6140:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6138:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 905, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "6152:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 907, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "6162:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 908, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "6166:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 909, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6170:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 906, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6155:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6155:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 911, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6174:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 904, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6145:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6145:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6138:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 914, - "nodeType": "ExpressionStatement", - "src": "6138:38:0" - } - ] - }, - "documentation": "@notice Subtraction of two points in Jacobian coordinates, placing the result in the first point\n @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n @param P An EC point in Jacobian coordinates. The result is returned here.\n @param Q An EC point in Jacobian coordinates", - "id": 916, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "subJacMutates", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 661, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 656, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "4936:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 653, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4936:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 655, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4941:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "4936:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 660, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "4954:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 657, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4954:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 659, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 658, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4959:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "4954:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4935:36:0" - }, - "payable": false, - "returnParameters": { - "id": 662, - "nodeType": "ParameterList", - "parameters": [], - "src": "4990:0:0" - }, - "scope": 1959, - "src": "4913:1270:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1046, - "nodeType": "Block", - "src": "6436:653:0", - "statements": [ - { - "assignments": [ - 928 - ], - "declarations": [ - { - "constant": false, - "id": 928, - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6446:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 927, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6446:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 932, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 929, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "6458:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 931, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6460:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6458:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6446:16:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 933, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "6476:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 934, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6481:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6476:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 937, - "nodeType": "IfStatement", - "src": "6472:31:0", - "trueBody": { - "expression": null, - "functionReturnParameters": 926, - "id": 936, - "nodeType": "Return", - "src": "6496:7:0" - } - }, - { - "assignments": [ - 939 - ], - "declarations": [ - { - "constant": false, - "id": 939, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6512:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 938, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6512:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 941, - "initialValue": { - "argumentTypes": null, - "id": 940, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "6524:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6512:23:0" - }, - { - "assignments": [ - 943 - ], - "declarations": [ - { - "constant": false, - "id": 943, - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6545:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 942, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6545:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 947, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 944, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "6557:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 946, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6559:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6557:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6545:16:0" - }, - { - "assignments": [ - 949 - ], - "declarations": [ - { - "constant": false, - "id": 949, - "name": "_2y", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6571:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 948, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6571:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 957, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6592:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 952, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "6595:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 954, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 953, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6597:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6595:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 955, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6601:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 950, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6585:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 956, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6585:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6571:32:0" - }, - { - "assignments": [ - 959 - ], - "declarations": [ - { - "constant": false, - "id": 959, - "name": "_4yy", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6613:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 958, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6613:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 965, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 961, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "6635:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 962, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "6640:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 963, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6645:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 960, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6628:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6628:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6613:34:0" - }, - { - "assignments": [ - 967 - ], - "declarations": [ - { - "constant": false, - "id": 967, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6657:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 966, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6657:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 973, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 969, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "6676:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 970, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 943, - "src": "6682:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 971, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6685:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 968, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6669:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6669:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6657:30:0" - }, - { - "assignments": [ - 975 - ], - "declarations": [ - { - "constant": false, - "id": 975, - "name": "m", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6697:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 974, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6697:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 985, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "33", - "id": 977, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6716:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 979, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 943, - "src": "6726:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 980, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 943, - "src": "6729:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 981, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6732:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 978, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6719:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6719:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 983, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6736:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 976, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6709:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6709:29:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6697:41:0" - }, - { - "assignments": [ - 987 - ], - "declarations": [ - { - "constant": false, - "id": 987, - "name": "t", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6748:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 986, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6748:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1001, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 990, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "6774:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 991, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "6777:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 992, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6780:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 989, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6767:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6767:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666656666666666633264", - "id": 995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6791:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d" - }, - { - "argumentTypes": null, - "id": 996, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "6859:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 997, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6862:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 994, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6784:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6784:80:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 999, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6865:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 988, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6760:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1000, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6760:107:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6748:119:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1002, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "6877:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1004, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1003, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6879:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6877:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1005, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "6884:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6877:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1007, - "nodeType": "ExpressionStatement", - "src": "6877:8:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1008, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "6895:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1010, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1009, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6897:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6895:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1013, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "6916:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1015, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "6926:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1016, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6929:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1017, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "6933:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6929:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1019, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6936:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1014, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6919:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1020, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6919:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1021, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6940:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1012, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6909:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6909:33:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666663766666666653137", - "id": 1024, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6951:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1026, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "7026:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1027, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "7032:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1028, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7038:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1025, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7019:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7019:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1030, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7042:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1023, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6944:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6944:100:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1032, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7046:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1011, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6902:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6902:146:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6895:153:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1035, - "nodeType": "ExpressionStatement", - "src": "6895:153:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1044, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1036, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "7058:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1038, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7060:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7058:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1040, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "7072:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1041, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "7077:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1042, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7080:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1039, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7065:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7065:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7058:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1045, - "nodeType": "ExpressionStatement", - "src": "7058:24:0" - } - ] - }, - "documentation": "@notice Point doubling in Jacobian coordinates\n @param P An EC point in Jacobian coordinates. \n @return An EC point in Jacobian coordinates ", - "id": 1047, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "doubleJac", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 921, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 920, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6373:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "6373:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 919, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6378:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "6373:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6372:18:0" - }, - "payable": false, - "returnParameters": { - "id": 926, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 925, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6418:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 922, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "6418:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 924, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 923, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6423:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "6418:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6417:18:0" - }, - "scope": 1959, - "src": "6354:735:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1173, - "nodeType": "Block", - "src": "7334:653:0", - "statements": [ - { - "assignments": [ - 1055 - ], - "declarations": [ - { - "constant": false, - "id": 1055, - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7344:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1054, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7344:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1059, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1056, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7356:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1058, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1057, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7358:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7356:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7344:16:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1060, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "7374:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1061, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7379:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7374:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1064, - "nodeType": "IfStatement", - "src": "7370:31:0", - "trueBody": { - "expression": null, - "functionReturnParameters": 1053, - "id": 1063, - "nodeType": "Return", - "src": "7394:7:0" - } - }, - { - "assignments": [ - 1066 - ], - "declarations": [ - { - "constant": false, - "id": 1066, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7410:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1065, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7410:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1068, - "initialValue": { - "argumentTypes": null, - "id": 1067, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "7422:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7410:23:0" - }, - { - "assignments": [ - 1070 - ], - "declarations": [ - { - "constant": false, - "id": 1070, - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7443:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1069, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7443:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1074, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1071, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7455:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1073, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7457:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7455:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7443:16:0" - }, - { - "assignments": [ - 1076 - ], - "declarations": [ - { - "constant": false, - "id": 1076, - "name": "_2y", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7469:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1075, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7469:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1084, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 1078, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7490:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1079, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7493:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1081, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1080, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7495:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7493:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1082, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7499:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1077, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7483:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1083, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7483:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7469:32:0" - }, - { - "assignments": [ - 1086 - ], - "declarations": [ - { - "constant": false, - "id": 1086, - "name": "_4yy", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7511:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1085, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7511:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1092, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1088, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "7533:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1089, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "7538:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1090, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7543:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1087, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7526:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7526:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7511:34:0" - }, - { - "assignments": [ - 1094 - ], - "declarations": [ - { - "constant": false, - "id": 1094, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7555:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1093, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7555:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1100, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1096, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "7574:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1097, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "7580:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1098, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7583:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1095, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7567:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7567:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7555:30:0" - }, - { - "assignments": [ - 1102 - ], - "declarations": [ - { - "constant": false, - "id": 1102, - "name": "m", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7595:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1101, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7595:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1112, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "33", - "id": 1104, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7614:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1106, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "7624:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1107, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "7627:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1108, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7630:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1105, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7617:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7617:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1110, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7634:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1103, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7607:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7607:29:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7595:41:0" - }, - { - "assignments": [ - 1114 - ], - "declarations": [ - { - "constant": false, - "id": 1114, - "name": "t", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7646:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1113, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7646:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1128, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1117, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "7672:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1118, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "7675:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1119, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7678:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1116, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7665:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7665:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666656666666666633264", - "id": 1122, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7689:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d" - }, - { - "argumentTypes": null, - "id": 1123, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1094, - "src": "7757:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1124, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7760:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1121, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7682:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7682:80:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1126, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7763:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1115, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "7658:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7658:107:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7646:119:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1129, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7775:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1131, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7777:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7775:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1132, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "7782:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7775:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1134, - "nodeType": "ExpressionStatement", - "src": "7775:8:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1135, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7793:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1137, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7795:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7793:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1140, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "7814:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1142, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1094, - "src": "7824:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1143, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7827:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1144, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "7831:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7827:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1146, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7834:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1141, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "7817:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7817:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1148, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7838:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1139, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7807:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7807:33:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666663766666666653137", - "id": 1151, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7849:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1153, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "7924:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1154, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "7930:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1155, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7936:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1152, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7917:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7917:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1157, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7940:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1150, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7842:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1158, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7842:100:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1159, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7944:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1138, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "7800:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7800:146:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7793:153:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1162, - "nodeType": "ExpressionStatement", - "src": "7793:153:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1171, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1163, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7956:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1165, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7958:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7956:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1167, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "7970:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1168, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "7975:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1169, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7978:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1166, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7963:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7963:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7956:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1172, - "nodeType": "ExpressionStatement", - "src": "7956:24:0" - } - ] - }, - "documentation": "@notice Point doubling in Jacobian coordinates, placing the result in the first point\n @param P An EC point in Jacobian coordinates. The result is also stored here.", - "id": 1174, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "doubleMutates", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1051, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7298:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1048, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7298:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1050, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7303:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "7298:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7297:18:0" - }, - "payable": false, - "returnParameters": { - "id": 1053, - "nodeType": "ParameterList", - "parameters": [], - "src": "7334:0:0" - }, - "scope": 1959, - "src": "7275:712:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1531, - "nodeType": "Block", - "src": "8091:1350:0", - "statements": [ - { - "assignments": [ - 1190 - ], - "declarations": [ - { - "constant": false, - "id": 1190, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8101:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1189, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8101:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1192, - "initialValue": { - "argumentTypes": null, - "id": 1191, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "8113:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8101:23:0" - }, - { - "assignments": [ - 1194 - ], - "declarations": [ - { - "constant": false, - "id": 1194, - "name": "beta", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8134:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1193, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8134:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1196, - "initialValue": { - "argumentTypes": null, - "hexValue": "307837616539366132623635376330373130366536343437396561633334333465393963663034393735313266353839393563313339366332383731393530316565", - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8149:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_55594575648329892869085402983802832744385952214688224221778511981742606582254_by_1", - "typeString": "int_const 5559...(69 digits omitted)...2254" - }, - "value": "0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee" - }, - "nodeType": "VariableDeclarationStatement", - "src": "8134:81:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1203, - "name": "iPj", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8226:24:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3][4]" - }, - "typeName": { - "baseType": { - "baseType": { - "id": 1200, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8226:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1201, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8234:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "8226:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "id": 1202, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8237:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8226:13:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_storage_$4_storage_ptr", - "typeString": "uint256[3][4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1204, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8226:24:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1209, - "name": "double", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8260:24:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1207, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8260:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1208, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8268:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "8260:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1210, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8260:24:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1211, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8322:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1212, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8328:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1214, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8331:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8328:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "src": "8322:11:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1216, - "nodeType": "ExpressionStatement", - "src": "8322:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1217, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8343:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1219, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8347:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8343:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1220, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8353:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1222, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8357:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8353:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1223, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8361:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1225, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8365:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8361:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1226, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8369:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1227, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8352:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8343:28:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1229, - "nodeType": "ExpressionStatement", - "src": "8343:28:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1230, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8403:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1232, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8422:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1234, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8426:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8422:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1231, - "name": "doubleJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1047, - "src": "8412:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8412:17:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8403:26:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1237, - "nodeType": "ExpressionStatement", - "src": "8403:26:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1238, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8439:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1240, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1239, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8443:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8439:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1242, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8455:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1243, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8463:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1245, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8467:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8463:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1241, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "8448:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8448:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8439:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1248, - "nodeType": "ExpressionStatement", - "src": "8439:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1249, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8480:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1251, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8484:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8480:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1253, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8496:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1254, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8504:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1256, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1255, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8508:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8504:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1252, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "8489:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8489:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8480:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1259, - "nodeType": "ExpressionStatement", - "src": "8480:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1260, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8521:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1262, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8525:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8521:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1264, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8537:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1265, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8545:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1267, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8549:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8545:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1263, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "8530:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8530:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8521:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1270, - "nodeType": "ExpressionStatement", - "src": "8521:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1271, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8590:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1274, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1272, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8593:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8590:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1275, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8596:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8590:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1277, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8609:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1278, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8615:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1280, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1279, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8619:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8615:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1281, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8623:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1276, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8602:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8602:23:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1283, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8627:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1285, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8631:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8627:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1286, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8635:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1287, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8601:36:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8590:47:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1289, - "nodeType": "ExpressionStatement", - "src": "8590:47:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1290, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8654:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1293, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8657:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8654:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1294, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1292, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8660:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8654:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1296, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8673:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1297, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8679:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1299, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1298, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8683:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8679:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1301, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1300, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8686:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8679:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1302, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8690:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1295, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8666:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8666:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1304, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8694:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1306, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8698:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8694:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1308, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8701:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8694:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1309, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8705:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1311, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1310, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8709:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8705:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1313, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1312, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8712:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8705:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1314, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8665:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8654:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1316, - "nodeType": "ExpressionStatement", - "src": "8654:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1317, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8725:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1320, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8728:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8725:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1321, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1319, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8731:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8725:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1323, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8744:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1324, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8750:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1326, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1325, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8754:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8750:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1328, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8757:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8750:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1329, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8761:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1322, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8737:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8737:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1331, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8765:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1333, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1332, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8769:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8765:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1335, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1334, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8772:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8765:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1336, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8776:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1338, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1337, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8780:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8776:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1340, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8783:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8776:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1341, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8736:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8725:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1343, - "nodeType": "ExpressionStatement", - "src": "8725:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1344, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8796:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1347, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8799:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8796:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1348, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1346, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8802:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8796:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1350, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8815:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1351, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8821:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1353, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8825:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8821:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1355, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8828:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8821:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1356, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8832:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1349, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8808:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8808:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1358, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8836:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1360, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8840:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8836:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1362, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8843:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8836:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1363, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8847:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1365, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1364, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8851:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8847:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1367, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1366, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8854:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8847:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1368, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8807:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8796:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1370, - "nodeType": "ExpressionStatement", - "src": "8796:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1371, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8895:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1372, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8901:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1374, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8904:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8901:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "src": "8895:11:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1376, - "nodeType": "ExpressionStatement", - "src": "8895:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1377, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8916:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1379, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8920:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8916:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1380, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8926:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1382, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1381, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8930:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8926:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1383, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8934:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1385, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1384, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8938:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8934:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8942:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1387, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8925:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8916:28:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1389, - "nodeType": "ExpressionStatement", - "src": "8916:28:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1390, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8980:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1392, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8999:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1394, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9003:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8999:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1391, - "name": "doubleJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1047, - "src": "8989:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8989:17:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8980:26:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1397, - "nodeType": "ExpressionStatement", - "src": "8980:26:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1398, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9016:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1400, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1399, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9020:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9016:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1402, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "9032:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1403, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9040:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1405, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1404, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9044:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9040:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1401, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "9025:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9025:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9016:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1408, - "nodeType": "ExpressionStatement", - "src": "9016:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1409, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9057:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1411, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9061:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9057:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1413, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "9073:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1414, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9081:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1416, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1415, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9085:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9081:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1412, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "9066:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9066:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9057:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1419, - "nodeType": "ExpressionStatement", - "src": "9057:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1420, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9098:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1422, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1421, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9102:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9098:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1424, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "9114:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1425, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9122:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1427, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9126:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9122:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1423, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "9107:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9107:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9098:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1430, - "nodeType": "ExpressionStatement", - "src": "9098:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1431, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9167:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1434, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9170:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9167:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1435, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1433, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9173:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9167:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1437, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9186:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1438, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "9192:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1440, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1439, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9196:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9192:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1441, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9200:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1436, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9179:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9179:23:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1443, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "9204:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1445, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9208:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9204:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9212:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1447, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9178:36:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9167:47:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1449, - "nodeType": "ExpressionStatement", - "src": "9167:47:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1450, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9231:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1453, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1451, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9234:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9231:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1454, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1452, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9237:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9231:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1456, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9250:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1457, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9256:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1459, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1458, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9260:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9256:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1461, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9263:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9256:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1462, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9267:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1455, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9243:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9243:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1464, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9271:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1466, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1465, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9275:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9271:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1468, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9278:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9271:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1469, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9282:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1471, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9286:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9282:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1473, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1472, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9289:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9282:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1474, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9242:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9231:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1476, - "nodeType": "ExpressionStatement", - "src": "9231:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1477, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9302:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1480, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1478, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9305:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9302:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1481, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1479, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9308:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9302:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1483, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9321:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1484, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9327:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1486, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1485, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9331:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9327:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1488, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1487, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9334:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9327:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1489, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9338:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1482, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9314:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9314:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1491, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9342:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1493, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1492, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9346:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9342:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1495, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1494, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9349:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9342:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1496, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9353:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1498, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9357:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9353:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1500, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1499, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9360:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9353:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1501, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9313:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9302:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1503, - "nodeType": "ExpressionStatement", - "src": "9302:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1504, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9373:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1507, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9376:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9373:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1508, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9379:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9373:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1510, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9392:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1511, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9398:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1513, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9402:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9398:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1515, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9405:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9398:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1516, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9409:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1509, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9385:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9385:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1518, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9413:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1520, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9417:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9413:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1522, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9420:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9413:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1523, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9424:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1525, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1524, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9428:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9424:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1527, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9431:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9424:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1528, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9384:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9373:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1530, - "nodeType": "ExpressionStatement", - "src": "9373:61:0" - } - ] - }, - "documentation": null, - "id": 1532, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_lookup_sim_mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1187, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1182, - "name": "iP", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8022:26:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3][4][4]" - }, - "typeName": { - "baseType": { - "baseType": { - "baseType": { - "id": 1175, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8022:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1177, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8030:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "8022:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "id": 1179, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8033:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8022:13:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_storage_$4_storage_ptr", - "typeString": "uint256[3][4]" - } - }, - "id": 1181, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8036:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8022:16:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_storage_$4_storage_$4_storage_ptr", - "typeString": "uint256[3][4][4]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1186, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8050:21:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1183, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8050:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1185, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8058:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8050:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8021:51:0" - }, - "payable": false, - "returnParameters": { - "id": 1188, - "nodeType": "ParameterList", - "parameters": [], - "src": "8091:0:0" - }, - "scope": 1959, - "src": "7997:1444:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1570, - "nodeType": "Block", - "src": "9783:875:0", - "statements": [ - { - "assignments": [ - 1542 - ], - "declarations": [ - { - "constant": false, - "id": 1542, - "name": "sign", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9798:8:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 1541, - "name": "int", - "nodeType": "ElementaryTypeName", - "src": "9798:3:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1552, - "initialValue": { - "argumentTypes": null, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1543, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "9809:1:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9813:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9809:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "31", - "id": 1549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9826:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "id": 1548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9822:3:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int" - }, - "id": 1550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9822:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "9809:19:0", - "trueExpression": { - "argumentTypes": null, - "id": 1547, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9817:2:0", - "subExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9818:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-1_by_1", - "typeString": "int_const -1" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9798:30:0" - }, - { - "assignments": [ - 1554 - ], - "declarations": [ - { - "constant": false, - "id": 1554, - "name": "k", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9838:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1553, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9838:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1560, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 1558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1556, - "name": "sign", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "9858:4:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 1557, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "9865:1:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "9858:8:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9850:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": "uint256" - }, - "id": 1559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9850:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9838:29:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1561, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1539, - "src": "9878:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1562, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9887:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9878:10:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1564, - "nodeType": "ExpressionStatement", - "src": "9878:10:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1537, - "isOffset": false, - "isSlot": false, - "src": "9953:3:0", - "valueSize": 1 - } - }, - { - "ptr": { - "declaration": 1537, - "isOffset": false, - "isSlot": false, - "src": "10028:3:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10114:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10164:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10219:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10259:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10246:1:0", - "valueSize": 1 - } - }, - { - "ptr": { - "declaration": 1537, - "isOffset": false, - "isSlot": false, - "src": "10393:3:0", - "valueSize": 1 - } - }, - { - "length": { - "declaration": 1539, - "isOffset": false, - "isSlot": false, - "src": "10398:6:0", - "valueSize": 1 - } - }, - { - "sign": { - "declaration": 1542, - "isOffset": false, - "isSlot": false, - "src": "10419:4:0", - "valueSize": 1 - } - }, - { - "sign": { - "declaration": 1542, - "isOffset": false, - "isSlot": false, - "src": "10437:4:0", - "valueSize": 1 - } - }, - { - "length": { - "declaration": 1539, - "isOffset": false, - "isSlot": false, - "src": "10497:6:0", - "valueSize": 1 - } - }, - { - "length": { - "declaration": 1539, - "isOffset": false, - "isSlot": false, - "src": "10483:6:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10533:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10524:1:0", - "valueSize": 1 - } - } - ], - "id": 1565, - "nodeType": "InlineAssembly", - "operations": "{\n let ki := 0\n ptr := mload(0x40)\n mstore(0x40, add(ptr, 300))\n for {\n }\n gt(k, 0)\n {\n }\n {\n if and(k, 1)\n {\n ki := mod(k, 16)\n k := add(sub(k, ki), mul(gt(ki, 8), 16))\n mstore8(add(ptr, length), add(mul(ki, sign), sub(8, mul(sign, 8))))\n }\n length := add(length, 1)\n k := div(k, 2)\n }\n}", - "src": "9898:739:0" - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 1566, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "10639:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1567, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1539, - "src": "10644:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1568, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10638:13:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 1540, - "id": 1569, - "nodeType": "Return", - "src": "10631:20:0" - } - ] - }, - "documentation": "@notice Computes the WNAF representation of an integer, and puts the resulting array of coefficients in memory\n @param d A 256-bit integer\n @return (ptr, length) The pointer to the first coefficient, and the total length of the array", - "id": 1571, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_wnaf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1535, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1534, - "name": "d", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9718:8:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 1533, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "9718:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9717:10:0" - }, - "payable": false, - "returnParameters": { - "id": 1540, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1537, - "name": "ptr", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9755:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1536, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9755:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1539, - "name": "length", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9768:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1538, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9768:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9754:29:0" - }, - "scope": 1959, - "src": "9703:955:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1662, - "nodeType": "Block", - "src": "11194:423:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1588, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11222:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1590, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11226:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11222:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1591, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11230:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1593, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1592, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11234:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11230:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1587, - "name": "is_on_curve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1958, - "src": "11210:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256,uint256) view returns (bool)" - } - }, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11210:27:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1596, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11253:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1598, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1597, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11257:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11253:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1599, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11261:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1601, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11265:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11261:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1595, - "name": "is_on_curve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1958, - "src": "11241:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256,uint256) view returns (bool)" - } - }, - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11241:27:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11210:58:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e76616c696420706f696e7473", - "id": 1604, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11270:16:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_dfa878a6a2e6e151811fe177c18671083315e2284455342448cad3dd65cb3e58", - "typeString": "literal_string \"Invalid points\"" - }, - "value": "Invalid points" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_dfa878a6a2e6e151811fe177c18671083315e2284455342448cad3dd65cb3e58", - "typeString": "literal_string \"Invalid points\"" - } - ], - "id": 1586, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2097, - 2098 - ], - "referencedDeclaration": 2098, - "src": "11202:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11202:85:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1606, - "nodeType": "ExpressionStatement", - "src": "11202:85:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1611, - "name": "wnaf", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11298:22:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1609, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11298:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1610, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11306:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11298:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1612, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11298:22:0" - }, - { - "assignments": [ - 1614 - ], - "declarations": [ - { - "constant": false, - "id": 1614, - "name": "max_count", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11330:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1613, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11330:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1616, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1615, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11350:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11330:21:0" - }, - { - "assignments": [ - 1618 - ], - "declarations": [ - { - "constant": false, - "id": 1618, - "name": "count", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11361:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1617, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11361:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1620, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1619, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11377:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11361:17:0" - }, - { - "body": { - "id": 1652, - "nodeType": "Block", - "src": "11420:141:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1631, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1611, - "src": "11435:4:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1633, - "indexExpression": { - "argumentTypes": null, - "id": 1632, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11440:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "11435:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1634, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "11444:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1635, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "11434:16:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1637, - "name": "k_l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1575, - "src": "11459:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4] memory" - } - }, - "id": 1639, - "indexExpression": { - "argumentTypes": null, - "id": 1638, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11463:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11459:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 1636, - "name": "_wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1571, - "src": "11453:5:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_int256_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (int256) view returns (uint256,uint256)" - } - }, - "id": 1640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11453:13:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "src": "11434:32:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1642, - "nodeType": "ExpressionStatement", - "src": "11434:32:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1643, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "11483:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 1644, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1614, - "src": "11491:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11483:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1651, - "nodeType": "IfStatement", - "src": "11480:71:0", - "trueBody": { - "id": 1650, - "nodeType": "Block", - "src": "11501:50:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1646, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1614, - "src": "11519:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1647, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "11531:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11519:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1649, - "nodeType": "ExpressionStatement", - "src": "11519:17:0" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11411:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 1626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11413:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "11411:3:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1653, - "initializationExpression": { - "assignments": [ - 1622 - ], - "declarations": [ - { - "constant": false, - "id": 1622, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11401:6:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1621, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11401:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1624, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1623, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11408:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11401:8:0" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "11416:3:0", - "subExpression": { - "argumentTypes": null, - "id": 1628, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11416:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1630, - "nodeType": "ExpressionStatement", - "src": "11416:3:0" - }, - "nodeType": "ForStatement", - "src": "11397:164:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1654, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1584, - "src": "11571:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1656, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1611, - "src": "11589:4:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - { - "argumentTypes": null, - "id": 1657, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1614, - "src": "11595:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1658, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11606:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - ], - "id": 1655, - "name": "_sim_mul_wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1906, - "src": "11575:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$4_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$4_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[4] memory,uint256,uint256[4] memory) view returns (uint256[3] memory)" - } - }, - "id": 1659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11575:35:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "11571:39:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1661, - "nodeType": "ExpressionStatement", - "src": "11571:39:0" - } - ] - }, - "documentation": "@notice Simultaneous multiplication of the form kP + lQ. \n @dev Scalars k and l are expected to be decomposed such that k = k1 + k2 ฮป, and l = l1 + l2 ฮป,\n where ฮป is specific to the endomorphism of the curve\n @param k_l An array with the decomposition of k and l values, i.e., [k1, k2, l1, l2]\n @param P_Q An array with the affine coordinates of both P and Q, i.e., [P1, P2, Q1, Q2]", - "id": 1663, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_sim_mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1575, - "name": "k_l", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11104:20:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4]" - }, - "typeName": { - "baseType": { - "id": 1572, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "11104:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1574, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11111:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11104:9:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_storage_ptr", - "typeString": "int256[4]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1579, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11126:21:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1576, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11126:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1578, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11134:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11126:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11103:45:0" - }, - "payable": false, - "returnParameters": { - "id": 1585, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1584, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11176:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1581, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11176:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1583, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11181:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "11176:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11175:18:0" - }, - "scope": 1959, - "src": "11086:531:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1905, - "nodeType": "Block", - "src": "11763:1461:0", - "statements": [ - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1688, - "name": "iP", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11773:26:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3][4][4]" - }, - "typeName": { - "baseType": { - "baseType": { - "baseType": { - "id": 1684, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11773:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1685, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11781:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "11773:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "id": 1686, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1682, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11784:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11773:13:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_storage_$4_storage_ptr", - "typeString": "uint256[3][4]" - } - }, - "id": 1687, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1683, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11787:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11773:16:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_storage_$4_storage_$4_storage_ptr", - "typeString": "uint256[3][4][4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1689, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11773:26:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1691, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "11825:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - { - "argumentTypes": null, - "id": 1692, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1673, - "src": "11829:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - ], - "id": 1690, - "name": "_lookup_sim_mul", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "11809:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr_$_t_array$_t_uint256_$4_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory[4] memory[4] memory,uint256[4] memory) view" - } - }, - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:24:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1694, - "nodeType": "ExpressionStatement", - "src": "11809:24:0" - }, - { - "assignments": [ - 1696 - ], - "declarations": [ - { - "constant": false, - "id": 1696, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11861:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1695, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11861:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1698, - "initialValue": { - "argumentTypes": null, - "id": 1697, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1669, - "src": "11873:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11861:18:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1700, - "name": "ki", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11889:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1699, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11889:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1701, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11889:10:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1703, - "name": "ptr", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11909:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1702, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1704, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11909:11:0" - }, - { - "body": { - "id": 1903, - "nodeType": "Block", - "src": "11943:1275:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "11957:3:0", - "subExpression": { - "argumentTypes": null, - "id": 1708, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "11957:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1710, - "nodeType": "ExpressionStatement", - "src": "11957:3:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1712, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "11989:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "id": 1711, - "name": "doubleMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1174, - "src": "11975:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory) view" - } - }, - "id": 1713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11975:16:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1714, - "nodeType": "ExpressionStatement", - "src": "11975:16:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1715, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12006:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1716, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12012:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1718, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1717, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12021:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12012:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1719, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12026:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12012:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12006:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1722, - "nodeType": "ExpressionStatement", - "src": "12006:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12088:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12068:2:0", - "valueSize": 1 - } - } - ], - "id": 1723, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12041:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1724, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12125:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12130:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "12125:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1742, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12214:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12219:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12214:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1760, - "nodeType": "IfStatement", - "src": "12210:82:0", - "trueBody": { - "id": 1759, - "nodeType": "Block", - "src": "12222:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1746, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12254:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1747, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12257:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1749, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1748, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12260:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12257:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1756, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1750, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12264:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1751, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12269:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "12264:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1753, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12263:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1754, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12274:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12263:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12257:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1745, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12240:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12240:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1758, - "nodeType": "ExpressionStatement", - "src": "12240:37:0" - } - ] - } - }, - "id": 1761, - "nodeType": "IfStatement", - "src": "12121:171:0", - "trueBody": { - "id": 1741, - "nodeType": "Block", - "src": "12133:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1728, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12165:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1729, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12168:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1731, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1730, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12168:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1738, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12175:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1733, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12180:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12175:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1735, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12174:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1736, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12186:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12174:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12168:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1727, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "12151:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1739, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12151:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1740, - "nodeType": "ExpressionStatement", - "src": "12151:38:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 1768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1762, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12306:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1763, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12312:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1765, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12321:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12312:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1766, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12326:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12312:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12306:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1769, - "nodeType": "ExpressionStatement", - "src": "12306:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12388:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12368:2:0", - "valueSize": 1 - } - } - ], - "id": 1770, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12341:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1771, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12425:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1772, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12430:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "12425:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1789, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12514:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1790, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12519:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12514:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1807, - "nodeType": "IfStatement", - "src": "12510:82:0", - "trueBody": { - "id": 1806, - "nodeType": "Block", - "src": "12522:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1793, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12554:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1794, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12557:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1796, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1795, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12560:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12557:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1803, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1797, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12564:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12569:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "12564:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1800, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12563:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1801, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12574:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12563:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12557:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1792, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12540:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12540:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1805, - "nodeType": "ExpressionStatement", - "src": "12540:37:0" - } - ] - } - }, - "id": 1808, - "nodeType": "IfStatement", - "src": "12421:171:0", - "trueBody": { - "id": 1788, - "nodeType": "Block", - "src": "12433:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1775, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12465:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1776, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12468:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1778, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1777, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12471:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12468:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1785, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12475:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1780, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12480:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12475:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1782, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12474:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1783, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12486:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12474:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12468:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1774, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "12451:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12451:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1787, - "nodeType": "ExpressionStatement", - "src": "12451:38:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1809, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12607:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1810, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12613:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1812, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1811, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12622:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12613:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1813, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12627:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12613:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12607:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "12607:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12689:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12669:2:0", - "valueSize": 1 - } - } - ], - "id": 1817, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12642:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1818, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12726:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1819, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12731:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "12726:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1838, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1836, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12815:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1837, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12820:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12815:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1854, - "nodeType": "IfStatement", - "src": "12811:82:0", - "trueBody": { - "id": 1853, - "nodeType": "Block", - "src": "12823:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1840, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12855:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1841, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12858:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1843, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12861:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12858:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1850, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1844, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12865:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1845, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12870:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "12865:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1847, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12864:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12875:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12864:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12858:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1839, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12841:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1851, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12841:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1852, - "nodeType": "ExpressionStatement", - "src": "12841:37:0" - } - ] - } - }, - "id": 1855, - "nodeType": "IfStatement", - "src": "12722:171:0", - "trueBody": { - "id": 1835, - "nodeType": "Block", - "src": "12734:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1822, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12766:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1823, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12769:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1825, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1824, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12772:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12769:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1832, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12776:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1827, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12781:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12776:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1829, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12775:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12787:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12775:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12769:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1821, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "12752:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12752:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "12752:38:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1856, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12908:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1857, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12914:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1859, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1858, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12923:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12914:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1860, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12928:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12914:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12908:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1863, - "nodeType": "ExpressionStatement", - "src": "12908:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12990:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12970:2:0", - "valueSize": 1 - } - } - ], - "id": 1864, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12943:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1865, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13027:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13032:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "13027:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1883, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13116:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13121:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "13116:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1901, - "nodeType": "IfStatement", - "src": "13112:82:0", - "trueBody": { - "id": 1900, - "nodeType": "Block", - "src": "13124:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1887, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "13156:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1888, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "13159:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1890, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1889, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13162:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13159:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1897, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1891, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13166:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "13166:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1894, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13165:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1895, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13176:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "13165:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13159:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1886, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "13142:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13142:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1899, - "nodeType": "ExpressionStatement", - "src": "13142:37:0" - } - ] - } - }, - "id": 1902, - "nodeType": "IfStatement", - "src": "13023:171:0", - "trueBody": { - "id": 1882, - "nodeType": "Block", - "src": "13035:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1869, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "13067:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1870, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "13070:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1872, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1871, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13073:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13070:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1879, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1878, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1873, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13077:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1874, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13082:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13077:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1876, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13076:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13088:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "13076:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13070:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1868, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "13053:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1880, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13053:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1881, - "nodeType": "ExpressionStatement", - "src": "13053:38:0" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1705, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "11936:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1706, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11940:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "11936:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1904, - "nodeType": "WhileStatement", - "src": "11930:1288:0" - } - ] - }, - "documentation": null, - "id": 1906, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_sim_mul_wnaf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1674, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1667, - "name": "wnaf_ptr", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11651:26:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11651:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1666, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11659:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11651:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1669, - "name": "length", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11679:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1668, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11679:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1673, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11695:21:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1670, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11695:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1672, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11703:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11695:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11650:67:0" - }, - "payable": false, - "returnParameters": { - "id": 1679, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1678, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11745:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1675, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11745:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1677, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11750:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "11745:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11744:18:0" - }, - "scope": 1959, - "src": "11628:1596:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1957, - "nodeType": "Block", - "src": "13306:248:0", - "statements": [ - { - "assignments": [ - 1916 - ], - "declarations": [ - { - "constant": false, - "id": 1916, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13316:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1915, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13316:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1918, - "initialValue": { - "argumentTypes": null, - "id": 1917, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "13328:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13316:23:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1919, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13354:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1920, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13360:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13354:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1922, - "name": "Py", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "13365:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1923, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13371:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13365:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "13354:18:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1928, - "nodeType": "IfStatement", - "src": "13350:48:0", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1926, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13393:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1914, - "id": 1927, - "nodeType": "Return", - "src": "13386:12:0" - } - }, - { - "assignments": [ - 1930 - ], - "declarations": [ - { - "constant": false, - "id": 1930, - "name": "y2", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13409:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1929, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13409:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1936, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1932, - "name": "Py", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "13429:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1933, - "name": "Py", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "13433:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1934, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13437:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1931, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "13422:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13422:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13409:30:0" - }, - { - "assignments": [ - 1938 - ], - "declarations": [ - { - "constant": false, - "id": 1938, - "name": "x3_plus_7", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13449:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1937, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13449:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1952, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1942, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13490:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1943, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13494:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1944, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13498:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1941, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "13483:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13483:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1946, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13502:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1947, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13506:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1940, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "13476:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13476:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "37", - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13510:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - "value": "7" - }, - { - "argumentTypes": null, - "id": 1950, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13513:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1939, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "13469:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13469:46:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13449:66:0" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1953, - "name": "y2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1930, - "src": "13532:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1954, - "name": "x3_plus_7", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1938, - "src": "13538:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13532:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1914, - "id": 1956, - "nodeType": "Return", - "src": "13525:22:0" - } - ] - }, - "documentation": null, - "id": 1958, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "is_on_curve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1911, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1908, - "name": "Px", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13251:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1907, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13251:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1910, - "name": "Py", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13263:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1909, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13263:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13250:24:0" - }, - "payable": false, - "returnParameters": { - "id": 1914, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1913, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13300:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1912, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "13300:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13299:6:0" - }, - "scope": 1959, - "src": "13230:324:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1960, - "src": "162:13395:0" - } - ], - "src": "0:13557:0" - }, - "legacyAST": { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/Numerology.sol", - "exportedSymbols": { - "Numerology": [ - 1959 - ] - }, - "id": 1960, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:0" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": "@title Numerology: A Solidity library for fast ECC arithmetics using curve secp256k1\n @author David Nuรฑez (david@nucypher.com)", - "fullyImplemented": true, - "id": 1959, - "linearizedBaseContracts": [ - 1959 - ], - "name": "Numerology", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 4, - "name": "field_order", - "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "188:97:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "188:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646454646464646433246", - "id": 3, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "219:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671663_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1663" - }, - "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F" - }, - "visibility": "internal" - }, - { - "body": { - "id": 122, - "nodeType": "Block", - "src": "650:676:0", - "statements": [ - { - "assignments": [ - 18 - ], - "declarations": [ - { - "constant": false, - "id": 18, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "660:6:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 17, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "660:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 20, - "initialValue": { - "argumentTypes": null, - "id": 19, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "669:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "660:20:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 25, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 21, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "694:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 23, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 22, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "696:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "694:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 24, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "702:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "694:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 37, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 33, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "782:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 35, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 34, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "784:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "782:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 36, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "790:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "782:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 41, - "nodeType": "IfStatement", - "src": "779:82:0", - "trueBody": { - "id": 40, - "nodeType": "Block", - "src": "792:69:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 38, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "813:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 16, - "id": 39, - "nodeType": "Return", - "src": "806:12:0" - } - ] - } - }, - "id": 42, - "nodeType": "IfStatement", - "src": "691:170:0", - "trueBody": { - "id": 32, - "nodeType": "Block", - "src": "704:69:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 26, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "725:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 28, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "727:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "725:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 29, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "733:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "725:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 16, - "id": 31, - "nodeType": "Return", - "src": "718:16:0" - } - ] - } - }, - { - "assignments": [ - 44 - ], - "declarations": [ - { - "constant": false, - "id": 44, - "name": "Q_z_squared", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "919:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 43, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "919:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 54, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 46, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "948:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 48, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 47, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "950:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "948:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 49, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "954:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 51, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 50, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "956:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "954:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 52, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "960:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 45, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "941:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 53, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "941:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "919:43:0" - }, - { - "assignments": [ - 56 - ], - "declarations": [ - { - "constant": false, - "id": 56, - "name": "P_z_squared", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "972:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 55, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "972:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 66, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 58, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1001:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 60, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 59, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1003:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1001:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 61, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1007:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 63, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 62, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1009:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1007:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 64, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 57, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "994:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "994:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "972:43:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 81, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 68, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1036:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 70, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1038:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1036:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 71, - "name": "Q_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "1042:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 72, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1055:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 67, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1029:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 73, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1029:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 75, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1068:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 77, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 76, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1070:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1068:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 78, - "name": "P_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "1074:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 79, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1087:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 74, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1061:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 80, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1061:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1029:60:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 85, - "nodeType": "IfStatement", - "src": "1025:100:0", - "trueBody": { - "id": 84, - "nodeType": "Block", - "src": "1090:35:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 82, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1109:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 16, - "id": 83, - "nodeType": "Return", - "src": "1102:12:0" - } - ] - } - }, - { - "assignments": [ - 87 - ], - "declarations": [ - { - "constant": false, - "id": 87, - "name": "Q_z_cubed", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "1135:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 86, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1135:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 95, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 89, - "name": "Q_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "1162:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 90, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1175:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 92, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 91, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1177:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1175:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1181:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 88, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1155:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1155:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1135:48:0" - }, - { - "assignments": [ - 97 - ], - "declarations": [ - { - "constant": false, - "id": 97, - "name": "P_z_cubed", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "1193:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 96, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1193:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 105, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 99, - "name": "P_z_squared", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "1220:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 100, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1233:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 102, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1235:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1233:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 103, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1239:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 98, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1213:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1213:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1193:48:0" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 107, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1265:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 109, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 108, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1267:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1265:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 110, - "name": "Q_z_cubed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1271:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 111, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1282:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 106, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1258:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1258:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 114, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1295:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 116, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 115, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1297:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1295:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 117, - "name": "P_z_cubed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 97, - "src": "1301:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 118, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "1312:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 113, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "1288:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1288:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1258:56:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 16, - "id": 121, - "nodeType": "Return", - "src": "1251:63:0" - } - ] - }, - "documentation": "@notice Equality test of two points in Jacobian coordinates\n @param P An EC point in Jacobian coordinates\n @param Q An EC point in Jacobian coordinates\n @return true if P and Q represent the same point in affine coordinates; false otherwise", - "id": 123, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "eq_jacobian", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 13, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "583:19:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 5, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "583:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 6, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "591:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "583:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "604:19:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "604:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 10, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "612:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "604:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "582:42:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 15, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "645:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 14, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "645:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "644:6:0" - }, - "scope": 1959, - "src": "562:764:0", - "stateMutability": "pure", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 393, - "nodeType": "Block", - "src": "1840:1024:0", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 138, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1854:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 140, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1856:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1854:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 141, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1862:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1854:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 146, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1906:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 148, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 147, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1908:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1906:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1914:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1906:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 154, - "nodeType": "IfStatement", - "src": "1903:46:0", - "trueBody": { - "id": 153, - "nodeType": "Block", - "src": "1916:33:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 151, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1937:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "functionReturnParameters": 137, - "id": 152, - "nodeType": "Return", - "src": "1930:8:0" - } - ] - } - }, - "id": 155, - "nodeType": "IfStatement", - "src": "1851:98:0", - "trueBody": { - "id": 145, - "nodeType": "Block", - "src": "1864:33:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 143, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "1885:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "functionReturnParameters": 137, - "id": 144, - "nodeType": "Return", - "src": "1878:8:0" - } - ] - } - }, - { - "assignments": [ - 157 - ], - "declarations": [ - { - "constant": false, - "id": 157, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1959:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 156, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1959:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 159, - "initialValue": { - "argumentTypes": null, - "id": 158, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "1971:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1959:23:0" - }, - { - "assignments": [ - 161 - ], - "declarations": [ - { - "constant": false, - "id": 161, - "name": "zz1", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1992:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 160, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1992:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 171, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 163, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 165, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2015:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2013:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 166, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2019:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 168, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 167, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2021:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2019:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 169, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2025:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 162, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2006:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2006:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1992:35:0" - }, - { - "assignments": [ - 173 - ], - "declarations": [ - { - "constant": false, - "id": 173, - "name": "zz2", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2037:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2037:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 183, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 175, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2058:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 177, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2060:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2058:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 178, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2064:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 180, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 179, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2066:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2064:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2070:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 174, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2051:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2051:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2037:35:0" - }, - { - "assignments": [ - 185 - ], - "declarations": [ - { - "constant": false, - "id": 185, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2082:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 184, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2082:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 193, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 187, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2103:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 189, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 188, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2105:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2103:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 190, - "name": "zz2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2109:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 191, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2114:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 186, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2096:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2096:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2082:34:0" - }, - { - "assignments": [ - 195 - ], - "declarations": [ - { - "constant": false, - "id": 195, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2126:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 194, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2126:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 209, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 197, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2147:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 199, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2149:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2147:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 201, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2160:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 203, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2162:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2160:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 204, - "name": "zz2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2166:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 205, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2171:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 200, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2153:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2153:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 207, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2175:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 196, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2140:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2140:37:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2126:51:0" - }, - { - "assignments": [ - 211 - ], - "declarations": [ - { - "constant": false, - "id": 211, - "name": "t0", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2190:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2190:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 219, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 213, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2211:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 215, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2213:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2211:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 216, - "name": "zz1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "2217:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 217, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2222:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 212, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2204:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2204:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2190:34:0" - }, - { - "assignments": [ - 221 - ], - "declarations": [ - { - "constant": false, - "id": 221, - "name": "t1", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2234:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 220, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2234:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 235, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2255:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2257:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2255:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 227, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2268:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 229, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2270:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2268:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 230, - "name": "zz1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "2274:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 231, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2279:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 226, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2261:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2261:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 233, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2283:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 222, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2248:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2248:37:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2234:51:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 236, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "2301:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 237, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "2306:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2301:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 239, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2300:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 240, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 195, - "src": "2314:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 241, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2319:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2314:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 243, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2313:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2300:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 250, - "nodeType": "IfStatement", - "src": "2296:71:0", - "trueBody": { - "id": 249, - "nodeType": "Block", - "src": "2323:44:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 246, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2354:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "id": 245, - "name": "doubleJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1047, - "src": "2344:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2344:12:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "functionReturnParameters": 137, - "id": 248, - "nodeType": "Return", - "src": "2337:19:0" - } - ] - } - }, - { - "assignments": [ - 252 - ], - "declarations": [ - { - "constant": false, - "id": 252, - "name": "d", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2376:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2376:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 260, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 254, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 221, - "src": "2397:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 255, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2401:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 256, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 195, - "src": "2403:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2401:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 258, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2406:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 253, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2390:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 259, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2390:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2376:32:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 265, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2432:19:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 263, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2432:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 264, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2440:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "2432:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 266, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2432:19:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 267, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2461:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 269, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2463:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2461:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 271, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "2475:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 272, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2479:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 273, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "2481:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2479:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 275, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2484:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 270, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2468:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2468:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2461:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 278, - "nodeType": "ExpressionStatement", - "src": "2461:25:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 279, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2510:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 281, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 280, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2512:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2510:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 283, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2524:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 285, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2526:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2524:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 286, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2530:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 288, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2532:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2530:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 289, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2536:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 282, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2517:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2517:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2510:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 292, - "nodeType": "ExpressionStatement", - "src": "2510:28:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 293, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2559:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 295, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 294, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2561:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2559:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 297, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2573:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 299, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2575:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2573:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 300, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2579:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 302, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 301, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2581:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2579:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 303, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2585:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 296, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2566:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2566:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2559:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "2559:28:0" - }, - { - "assignments": [ - 308 - ], - "declarations": [ - { - "constant": false, - "id": 308, - "name": "g", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "2609:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 307, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2609:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 316, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 310, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 185, - "src": "2628:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 311, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2631:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 313, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 312, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2633:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2631:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 314, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2637:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 309, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2621:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2621:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2609:30:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 317, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2649:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 319, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2651:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2649:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 322, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "2670:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 323, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "2673:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 324, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2676:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 321, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2663:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2663:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 326, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2680:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 329, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2696:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "id": 330, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "2699:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 331, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2702:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 328, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2689:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 332, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2689:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 333, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2706:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 335, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 334, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2708:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2706:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 336, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2712:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 327, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2682:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 337, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2682:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2680:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 339, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2716:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 320, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2656:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2656:62:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2649:69:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 342, - "nodeType": "ExpressionStatement", - "src": "2649:69:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 343, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2728:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 345, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2730:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2728:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 348, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "2749:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 350, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "2759:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 351, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2762:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 352, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2764:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 354, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2766:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2764:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2762:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 356, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2770:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 349, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2752:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2752:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 358, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2774:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 347, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2742:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2742:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 360, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2778:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 362, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 195, - "src": "2787:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 363, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2790:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 365, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 364, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2792:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2790:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 366, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2796:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 361, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2780:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2780:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2778:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 369, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2800:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 346, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "2735:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 370, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2735:67:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2728:74:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 372, - "nodeType": "ExpressionStatement", - "src": "2728:74:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 373, - "name": "R", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2812:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 375, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 374, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2814:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2812:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 377, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "2826:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 379, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2828:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2826:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 381, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "2839:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 383, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2841:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2839:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 384, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "2845:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 386, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 385, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2847:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2845:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 387, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2851:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 380, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2832:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2832:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 389, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "2855:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 376, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "2819:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 390, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2819:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2812:45:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 392, - "nodeType": "ExpressionStatement", - "src": "2812:45:0" - } - ] - }, - "documentation": "@notice Addition of two points in Jacobian coordinates\n @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n @param P An EC point in Jacobian coordinates\n @param Q An EC point in Jacobian coordinates\n @return An EC point in Jacobian coordinates with the sum , represented by an array of 3 uint256", - "id": 394, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "addJac", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 132, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 127, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1759:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 124, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1759:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 126, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1764:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1759:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 131, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1777:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 128, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1777:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 130, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 129, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1782:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1777:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1758:36:0" - }, - "payable": false, - "returnParameters": { - "id": 137, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 136, - "name": "R", - "nodeType": "VariableDeclaration", - "scope": 394, - "src": "1822:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 133, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1822:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 135, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1827:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1822:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1821:18:0" - }, - "scope": 1959, - "src": "1743:1121:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 651, - "nodeType": "Block", - "src": "3323:1205:0", - "statements": [ - { - "assignments": [ - 406 - ], - "declarations": [ - { - "constant": false, - "id": 406, - "name": "Pz", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3334:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 405, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3334:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 410, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 407, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3347:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 409, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3349:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3347:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3334:17:0" - }, - { - "assignments": [ - 412 - ], - "declarations": [ - { - "constant": false, - "id": 412, - "name": "Qz", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3361:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 411, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3361:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 416, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3374:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 414, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3376:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3374:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3361:17:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 419, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 417, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3392:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 418, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3398:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3392:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 444, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3513:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3519:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3513:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 449, - "nodeType": "IfStatement", - "src": "3510:42:0", - "trueBody": { - "id": 448, - "nodeType": "Block", - "src": "3521:31:0", - "statements": [ - { - "expression": null, - "functionReturnParameters": 404, - "id": 447, - "nodeType": "Return", - "src": "3535:7:0" - } - ] - } - }, - "id": 450, - "nodeType": "IfStatement", - "src": "3389:163:0", - "trueBody": { - "id": 443, - "nodeType": "Block", - "src": "3400:104:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 426, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 420, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3414:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 422, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 421, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3416:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3414:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 423, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3421:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 425, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3423:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3421:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3414:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 427, - "nodeType": "ExpressionStatement", - "src": "3414:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 428, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3439:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 430, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3441:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3439:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 431, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3446:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 433, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3448:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3446:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3439:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 435, - "nodeType": "ExpressionStatement", - "src": "3439:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 436, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3464:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 438, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 437, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3466:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3464:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 439, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3471:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3464:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 441, - "nodeType": "ExpressionStatement", - "src": "3464:9:0" - }, - { - "expression": null, - "functionReturnParameters": 404, - "id": 442, - "nodeType": "Return", - "src": "3487:7:0" - } - ] - } - }, - { - "assignments": [ - 452 - ], - "declarations": [ - { - "constant": false, - "id": 452, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3562:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3562:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 454, - "initialValue": { - "argumentTypes": null, - "id": 453, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "3574:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3562:23:0" - }, - { - "assignments": [ - 456 - ], - "declarations": [ - { - "constant": false, - "id": 456, - "name": "zz", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3596:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 455, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3596:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 462, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 458, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3616:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 459, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3620:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 460, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3624:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 457, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3609:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3609:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3596:30:0" - }, - { - "assignments": [ - 464 - ], - "declarations": [ - { - "constant": false, - "id": 464, - "name": "t0", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3636:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3636:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 472, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 466, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3657:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 468, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3659:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3657:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 469, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3663:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 470, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3667:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 465, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3650:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3650:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3636:33:0" - }, - { - "assignments": [ - 474 - ], - "declarations": [ - { - "constant": false, - "id": 474, - "name": "t1", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3679:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 473, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3679:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 486, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 476, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 402, - "src": "3700:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 478, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3702:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3700:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 480, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "3713:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 481, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3717:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 482, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3721:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 479, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3706:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3706:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3725:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 475, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3693:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 485, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3693:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3679:48:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 487, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3738:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 489, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3750:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 490, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3754:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 491, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3758:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 488, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3743:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3743:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3738:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "3738:22:0" - }, - { - "assignments": [ - 496 - ], - "declarations": [ - { - "constant": false, - "id": 496, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3770:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 495, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3770:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 504, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 498, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3791:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 500, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 499, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3793:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3791:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 501, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3797:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 502, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3801:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 497, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3784:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3784:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3770:33:0" - }, - { - "assignments": [ - 506 - ], - "declarations": [ - { - "constant": false, - "id": 506, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3813:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 505, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3813:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 518, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 508, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3834:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 510, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3836:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3834:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 512, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3847:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 513, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 456, - "src": "3851:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 514, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3855:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 511, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3840:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3840:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 516, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "3859:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 507, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "3827:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3827:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3813:48:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 519, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "3889:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 520, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "3894:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3889:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 522, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3888:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 525, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 523, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "3902:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 524, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "3907:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3902:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 526, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3901:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3888:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 534, - "nodeType": "IfStatement", - "src": "3884:88:0", - "trueBody": { - "id": 533, - "nodeType": "Block", - "src": "3911:61:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 529, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "3939:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "id": 528, - "name": "doubleMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1174, - "src": "3925:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory) view" - } - }, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3925:16:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 531, - "nodeType": "ExpressionStatement", - "src": "3925:16:0" - }, - { - "expression": null, - "functionReturnParameters": 404, - "id": 532, - "nodeType": "Return", - "src": "3955:7:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 535, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "3990:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 537, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4004:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 538, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4008:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 539, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "4010:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4008:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 536, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "3997:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3997:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3990:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 544, - "nodeType": "ExpressionStatement", - "src": "3990:25:0" - }, - { - "assignments": [ - 546 - ], - "declarations": [ - { - "constant": false, - "id": 546, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "4039:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 545, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4039:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 548, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4058:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 549, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4062:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 550, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "4064:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4062:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 552, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4067:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 547, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4051:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4051:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4039:30:0" - }, - { - "assignments": [ - 556 - ], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "e", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "4093:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4093:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 562, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 558, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4112:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 559, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4115:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 560, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4118:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 557, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4105:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 561, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4105:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4093:27:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 563, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4141:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 565, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "4153:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 566, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4156:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 567, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4159:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 564, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4146:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4146:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4141:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 570, - "nodeType": "ExpressionStatement", - "src": "4141:20:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 571, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4196:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 573, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4207:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 574, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4210:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 575, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4213:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 572, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4200:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4200:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4196:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 578, - "nodeType": "ExpressionStatement", - "src": "4196:19:0" - }, - { - "assignments": [ - 580 - ], - "declarations": [ - { - "constant": false, - "id": 580, - "name": "temp", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "4271:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 579, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4271:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 600, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 583, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4300:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 584, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4304:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 585, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4308:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 582, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4293:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4293:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 587, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4312:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 590, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4328:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "id": 591, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4331:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 592, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4335:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 589, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4321:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4321:16:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 594, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4339:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 595, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4342:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 588, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4314:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4314:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4312:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 598, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4346:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 581, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4286:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4286:62:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4271:77:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 601, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "4358:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 603, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 602, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4360:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4358:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 604, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4365:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4358:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 606, - "nodeType": "ExpressionStatement", - "src": "4358:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 607, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4379:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 609, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "4393:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 611, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "4404:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 612, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4408:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 613, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4410:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4408:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 615, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4416:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 610, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4397:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4397:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 617, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4420:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 608, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4386:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4386:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4379:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 620, - "nodeType": "ExpressionStatement", - "src": "4379:43:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 621, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "4432:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 623, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 622, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4434:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4432:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 625, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 580, - "src": "4446:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 626, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4452:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 628, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "4461:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 629, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "4464:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 630, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4467:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 627, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4454:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4454:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4452:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 633, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4471:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 624, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "4439:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4439:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4432:41:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 636, - "nodeType": "ExpressionStatement", - "src": "4432:41:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 637, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "4483:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 639, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 638, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4485:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4483:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 641, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "4497:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 643, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 406, - "src": "4507:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 644, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "4511:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 645, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4515:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 642, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4500:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4500:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 647, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "4519:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 640, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "4490:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4490:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4483:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 650, - "nodeType": "ExpressionStatement", - "src": "4483:38:0" - } - ] - }, - "documentation": "@notice Addition of two points in Jacobian coordinates, placing the result in the first point\n @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n @param P An EC point in Jacobian coordinates. The result is returned here.\n @param Q An EC point in Jacobian coordinates", - "id": 652, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "addJacMutates", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 403, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 398, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3269:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 395, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3269:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 397, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3274:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "3269:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 402, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "3287:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 399, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3287:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 401, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3292:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "3287:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3268:36:0" - }, - "payable": false, - "returnParameters": { - "id": 404, - "nodeType": "ParameterList", - "parameters": [], - "src": "3323:0:0" - }, - "scope": 1959, - "src": "3246:1282:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 915, - "nodeType": "Block", - "src": "4990:1193:0", - "statements": [ - { - "assignments": [ - 664 - ], - "declarations": [ - { - "constant": false, - "id": 664, - "name": "Pz", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5001:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 663, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5001:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 668, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 665, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5014:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 667, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5016:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5014:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5001:17:0" - }, - { - "assignments": [ - 670 - ], - "declarations": [ - { - "constant": false, - "id": 670, - "name": "Qz", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5028:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 669, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5028:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 674, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5041:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 673, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 672, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5043:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5041:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5028:17:0" - }, - { - "assignments": [ - 676 - ], - "declarations": [ - { - "constant": false, - "id": 676, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5055:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 675, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5055:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 678, - "initialValue": { - "argumentTypes": null, - "id": 677, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "5067:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5055:23:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 679, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5092:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5098:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5092:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 708, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5217:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 709, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5223:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5217:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 713, - "nodeType": "IfStatement", - "src": "5214:42:0", - "trueBody": { - "id": 712, - "nodeType": "Block", - "src": "5225:31:0", - "statements": [ - { - "expression": null, - "functionReturnParameters": 662, - "id": 711, - "nodeType": "Return", - "src": "5239:7:0" - } - ] - } - }, - "id": 714, - "nodeType": "IfStatement", - "src": "5089:167:0", - "trueBody": { - "id": 707, - "nodeType": "Block", - "src": "5100:108:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 682, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5114:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 684, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 683, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5116:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5114:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 685, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5121:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 687, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5123:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5121:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5114:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "5114:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 698, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 690, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5139:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 692, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 691, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5141:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5139:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 693, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5146:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 694, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5150:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 696, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5152:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5150:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5146:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5139:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 699, - "nodeType": "ExpressionStatement", - "src": "5139:15:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 704, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 700, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5168:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 702, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 701, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5170:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5168:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 703, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5175:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5168:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 705, - "nodeType": "ExpressionStatement", - "src": "5168:9:0" - }, - { - "expression": null, - "functionReturnParameters": 662, - "id": 706, - "nodeType": "Return", - "src": "5191:7:0" - } - ] - } - }, - { - "assignments": [ - 716 - ], - "declarations": [ - { - "constant": false, - "id": 716, - "name": "zz", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5266:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 715, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5266:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 722, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 718, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5286:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 719, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5290:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 720, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5294:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 717, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5279:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5279:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5266:30:0" - }, - { - "assignments": [ - 724 - ], - "declarations": [ - { - "constant": false, - "id": 724, - "name": "t0", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5306:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 723, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5306:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 732, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 726, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5327:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 728, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5329:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5327:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 729, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5333:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 730, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5337:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 725, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5320:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5320:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5306:33:0" - }, - { - "assignments": [ - 734 - ], - "declarations": [ - { - "constant": false, - "id": 734, - "name": "t1", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5349:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 733, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5349:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 748, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 736, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5370:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 737, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "5374:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 739, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5376:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5374:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5370:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 742, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "5387:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 743, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5391:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 744, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5395:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 741, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5380:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5380:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 746, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5399:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 735, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5363:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5363:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5349:52:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 749, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5412:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 751, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5424:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 752, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5428:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 753, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5432:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 750, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5417:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5417:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5412:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 756, - "nodeType": "ExpressionStatement", - "src": "5412:22:0" - }, - { - "assignments": [ - 758 - ], - "declarations": [ - { - "constant": false, - "id": 758, - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5444:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 757, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5444:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 766, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 760, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5465:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 762, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5467:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5465:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 763, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5471:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 764, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5475:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 759, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5458:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5458:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5444:33:0" - }, - { - "assignments": [ - 768 - ], - "declarations": [ - { - "constant": false, - "id": 768, - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5487:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 767, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5487:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 780, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 770, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5508:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 772, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 771, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5510:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5508:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "5521:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 775, - "name": "zz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 716, - "src": "5525:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 776, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5529:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 773, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5514:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5514:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 778, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5533:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 769, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5501:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5501:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5487:48:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 781, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "5552:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 782, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5557:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5552:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 784, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5551:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 785, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "5565:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 786, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5570:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5565:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 788, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5564:9:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5551:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 798, - "nodeType": "IfStatement", - "src": "5547:80:0", - "trueBody": { - "id": 797, - "nodeType": "Block", - "src": "5574:53:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 794, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 790, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "5588:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 792, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5590:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5588:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 793, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5595:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5588:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 795, - "nodeType": "ExpressionStatement", - "src": "5588:8:0" - }, - { - "expression": null, - "functionReturnParameters": 662, - "id": 796, - "nodeType": "Return", - "src": "5610:7:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 799, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5645:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 801, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5659:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 802, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5663:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 803, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "5665:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5663:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 805, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5668:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 800, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5652:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5652:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5645:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 808, - "nodeType": "ExpressionStatement", - "src": "5645:25:0" - }, - { - "assignments": [ - 810 - ], - "declarations": [ - { - "constant": false, - "id": 810, - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5694:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 809, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5694:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 818, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 812, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5713:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 813, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5717:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 814, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "5719:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5717:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 816, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5722:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 811, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5706:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5706:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5694:30:0" - }, - { - "assignments": [ - 820 - ], - "declarations": [ - { - "constant": false, - "id": 820, - "name": "e", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5748:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 819, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5748:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 826, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 822, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "5767:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 823, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "5770:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 824, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5773:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 821, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5760:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5760:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5748:27:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 827, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5796:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 829, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 758, - "src": "5808:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 830, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5811:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 831, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5814:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 828, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5801:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5801:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5796:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 834, - "nodeType": "ExpressionStatement", - "src": "5796:20:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 835, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5851:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 837, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5862:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 838, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "5865:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 839, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5868:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 836, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5855:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5855:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5851:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 842, - "nodeType": "ExpressionStatement", - "src": "5851:19:0" - }, - { - "assignments": [ - 844 - ], - "declarations": [ - { - "constant": false, - "id": 844, - "name": "temp", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "5926:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 843, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5926:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 864, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 847, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5955:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "5959:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 849, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5963:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 846, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5948:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 850, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5948:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 851, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5967:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5983:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "id": 855, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "5986:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 856, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5990:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 853, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "5976:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 857, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5976:16:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 858, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "5994:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 859, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "5997:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 852, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5969:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 860, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5969:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5967:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 862, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6001:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 845, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "5941:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5941:62:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5926:77:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 869, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 865, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "6013:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 867, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 866, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6015:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6013:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 868, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6020:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6013:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 870, - "nodeType": "ExpressionStatement", - "src": "6013:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 871, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6034:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 873, - "name": "t1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "6048:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 875, - "name": "t0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 724, - "src": "6059:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 878, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 876, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6063:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 877, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6065:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6063:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 879, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6071:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 874, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6052:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 880, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6052:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 881, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6075:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 872, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6041:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 882, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6041:36:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6034:43:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 884, - "nodeType": "ExpressionStatement", - "src": "6034:43:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 885, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "6087:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 887, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6089:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6087:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 889, - "name": "temp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "6101:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 890, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6107:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 892, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "6116:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 893, - "name": "e", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "6119:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 894, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6122:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 891, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6109:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6109:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6107:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 897, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6126:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 888, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6094:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6094:34:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6087:41:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 900, - "nodeType": "ExpressionStatement", - "src": "6087:41:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 901, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 656, - "src": "6138:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 903, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 902, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6140:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6138:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 905, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "6152:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 907, - "name": "Pz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "6162:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 908, - "name": "Qz", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "6166:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 909, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6170:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 906, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6155:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6155:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 911, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "6174:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 904, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6145:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6145:31:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6138:38:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 914, - "nodeType": "ExpressionStatement", - "src": "6138:38:0" - } - ] - }, - "documentation": "@notice Subtraction of two points in Jacobian coordinates, placing the result in the first point\n @dev Based on the addition formulas from http://www.hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2001-b.op3\n @param P An EC point in Jacobian coordinates. The result is returned here.\n @param Q An EC point in Jacobian coordinates", - "id": 916, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "subJacMutates", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 661, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 656, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "4936:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 653, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4936:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 655, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4941:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "4936:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 660, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 916, - "src": "4954:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 657, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4954:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 659, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 658, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4959:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "4954:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4935:36:0" - }, - "payable": false, - "returnParameters": { - "id": 662, - "nodeType": "ParameterList", - "parameters": [], - "src": "4990:0:0" - }, - "scope": 1959, - "src": "4913:1270:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1046, - "nodeType": "Block", - "src": "6436:653:0", - "statements": [ - { - "assignments": [ - 928 - ], - "declarations": [ - { - "constant": false, - "id": 928, - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6446:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 927, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6446:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 932, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 929, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "6458:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 931, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6460:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6458:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6446:16:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 933, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "6476:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 934, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6481:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6476:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 937, - "nodeType": "IfStatement", - "src": "6472:31:0", - "trueBody": { - "expression": null, - "functionReturnParameters": 926, - "id": 936, - "nodeType": "Return", - "src": "6496:7:0" - } - }, - { - "assignments": [ - 939 - ], - "declarations": [ - { - "constant": false, - "id": 939, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6512:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 938, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6512:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 941, - "initialValue": { - "argumentTypes": null, - "id": 940, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "6524:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6512:23:0" - }, - { - "assignments": [ - 943 - ], - "declarations": [ - { - "constant": false, - "id": 943, - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6545:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 942, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6545:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 947, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 944, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "6557:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 946, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6559:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6557:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6545:16:0" - }, - { - "assignments": [ - 949 - ], - "declarations": [ - { - "constant": false, - "id": 949, - "name": "_2y", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6571:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 948, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6571:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 957, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6592:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 952, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 920, - "src": "6595:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 954, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 953, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6597:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6595:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 955, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6601:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 950, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6585:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 956, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6585:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6571:32:0" - }, - { - "assignments": [ - 959 - ], - "declarations": [ - { - "constant": false, - "id": 959, - "name": "_4yy", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6613:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 958, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6613:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 965, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 961, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "6635:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 962, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "6640:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 963, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6645:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 960, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6628:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6628:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6613:34:0" - }, - { - "assignments": [ - 967 - ], - "declarations": [ - { - "constant": false, - "id": 967, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6657:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 966, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6657:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 973, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 969, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "6676:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 970, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 943, - "src": "6682:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 971, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6685:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 968, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6669:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6669:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6657:30:0" - }, - { - "assignments": [ - 975 - ], - "declarations": [ - { - "constant": false, - "id": 975, - "name": "m", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6697:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 974, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6697:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 985, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "33", - "id": 977, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6716:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 979, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 943, - "src": "6726:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 980, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 943, - "src": "6729:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 981, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6732:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 978, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6719:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6719:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 983, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6736:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 976, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6709:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6709:29:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6697:41:0" - }, - { - "assignments": [ - 987 - ], - "declarations": [ - { - "constant": false, - "id": 987, - "name": "t", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6748:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 986, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6748:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1001, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 990, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "6774:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 991, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "6777:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 992, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6780:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 989, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6767:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6767:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666656666666666633264", - "id": 995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6791:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d" - }, - { - "argumentTypes": null, - "id": 996, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "6859:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 997, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6862:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 994, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6784:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6784:80:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 999, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6865:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 988, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6760:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1000, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6760:107:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6748:119:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1002, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "6877:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1004, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1003, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6879:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6877:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1005, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "6884:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6877:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1007, - "nodeType": "ExpressionStatement", - "src": "6877:8:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1008, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "6895:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1010, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1009, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6897:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6895:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1013, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 975, - "src": "6916:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1015, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "6926:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1016, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6929:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1017, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "6933:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6929:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1019, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6936:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1014, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6919:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1020, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6919:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1021, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "6940:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1012, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6909:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6909:33:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666663766666666653137", - "id": 1024, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6951:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1026, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "7026:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1027, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "7032:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1028, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7038:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1025, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7019:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7019:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1030, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7042:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1023, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "6944:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6944:100:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1032, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7046:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1011, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "6902:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6902:146:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6895:153:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1035, - "nodeType": "ExpressionStatement", - "src": "6895:153:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1044, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1036, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 925, - "src": "7058:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1038, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7060:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7058:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1040, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 949, - "src": "7072:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1041, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 928, - "src": "7077:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1042, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 939, - "src": "7080:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1039, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7065:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7065:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7058:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1045, - "nodeType": "ExpressionStatement", - "src": "7058:24:0" - } - ] - }, - "documentation": "@notice Point doubling in Jacobian coordinates\n @param P An EC point in Jacobian coordinates. \n @return An EC point in Jacobian coordinates ", - "id": 1047, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "doubleJac", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 921, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 920, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6373:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "6373:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 919, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6378:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "6373:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6372:18:0" - }, - "payable": false, - "returnParameters": { - "id": 926, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 925, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 1047, - "src": "6418:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 922, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "6418:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 924, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 923, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6423:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "6418:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6417:18:0" - }, - "scope": 1959, - "src": "6354:735:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1173, - "nodeType": "Block", - "src": "7334:653:0", - "statements": [ - { - "assignments": [ - 1055 - ], - "declarations": [ - { - "constant": false, - "id": 1055, - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7344:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1054, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7344:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1059, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1056, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7356:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1058, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1057, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7358:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7356:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7344:16:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1060, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "7374:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1061, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7379:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7374:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1064, - "nodeType": "IfStatement", - "src": "7370:31:0", - "trueBody": { - "expression": null, - "functionReturnParameters": 1053, - "id": 1063, - "nodeType": "Return", - "src": "7394:7:0" - } - }, - { - "assignments": [ - 1066 - ], - "declarations": [ - { - "constant": false, - "id": 1066, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7410:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1065, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7410:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1068, - "initialValue": { - "argumentTypes": null, - "id": 1067, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "7422:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7410:23:0" - }, - { - "assignments": [ - 1070 - ], - "declarations": [ - { - "constant": false, - "id": 1070, - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7443:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1069, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7443:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1074, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1071, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7455:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1073, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7457:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7455:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7443:16:0" - }, - { - "assignments": [ - 1076 - ], - "declarations": [ - { - "constant": false, - "id": 1076, - "name": "_2y", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7469:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1075, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7469:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1084, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "32", - "id": 1078, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7490:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1079, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7493:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1081, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1080, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7495:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7493:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1082, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7499:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1077, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7483:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1083, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7483:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7469:32:0" - }, - { - "assignments": [ - 1086 - ], - "declarations": [ - { - "constant": false, - "id": 1086, - "name": "_4yy", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7511:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1085, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7511:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1092, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1088, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "7533:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1089, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "7538:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1090, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7543:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1087, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7526:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7526:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7511:34:0" - }, - { - "assignments": [ - 1094 - ], - "declarations": [ - { - "constant": false, - "id": 1094, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7555:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1093, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7555:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1100, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1096, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "7574:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1097, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "7580:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1098, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7583:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1095, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7567:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7567:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7555:30:0" - }, - { - "assignments": [ - 1102 - ], - "declarations": [ - { - "constant": false, - "id": 1102, - "name": "m", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7595:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1101, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7595:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1112, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "33", - "id": 1104, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7614:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1106, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "7624:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1107, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1070, - "src": "7627:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1108, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7630:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1105, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7617:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7617:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1110, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7634:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1103, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7607:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7607:29:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7595:41:0" - }, - { - "assignments": [ - 1114 - ], - "declarations": [ - { - "constant": false, - "id": 1114, - "name": "t", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7646:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1113, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7646:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1128, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1117, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "7672:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1118, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "7675:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1119, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7678:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1116, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7665:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7665:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666656666666666633264", - "id": 1122, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7689:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d" - }, - { - "argumentTypes": null, - "id": 1123, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1094, - "src": "7757:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1124, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7760:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834671661_by_1", - "typeString": "int_const 1157...(70 digits omitted)...1661" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1121, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7682:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7682:80:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1126, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7763:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1115, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "7658:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7658:107:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7646:119:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1129, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7775:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1131, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7777:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7775:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1132, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "7782:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7775:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1134, - "nodeType": "ExpressionStatement", - "src": "7775:8:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1135, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7793:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1137, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7795:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7793:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1140, - "name": "m", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "7814:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1142, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1094, - "src": "7824:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1143, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7827:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1144, - "name": "t", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "7831:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7827:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1146, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7834:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1141, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "7817:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7817:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1148, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7838:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1139, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7807:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7807:33:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666663766666666653137", - "id": 1151, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7849:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17" - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1153, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "7924:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1154, - "name": "_4yy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1086, - "src": "7930:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1155, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7936:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1152, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7917:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7917:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1157, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7940:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003954417335831_by_1", - "typeString": "int_const 5789...(69 digits omitted)...5831" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1150, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7842:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1158, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7842:100:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1159, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7944:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1138, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "7800:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7800:146:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7793:153:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1162, - "nodeType": "ExpressionStatement", - "src": "7793:153:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1171, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1163, - "name": "P", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1051, - "src": "7956:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1165, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7958:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7956:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1167, - "name": "_2y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1076, - "src": "7970:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1168, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "7975:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1169, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1066, - "src": "7978:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1166, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "7963:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7963:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7956:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1172, - "nodeType": "ExpressionStatement", - "src": "7956:24:0" - } - ] - }, - "documentation": "@notice Point doubling in Jacobian coordinates, placing the result in the first point\n @param P An EC point in Jacobian coordinates. The result is also stored here.", - "id": 1174, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "doubleMutates", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1051, - "name": "P", - "nodeType": "VariableDeclaration", - "scope": 1174, - "src": "7298:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1048, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7298:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1050, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7303:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "7298:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7297:18:0" - }, - "payable": false, - "returnParameters": { - "id": 1053, - "nodeType": "ParameterList", - "parameters": [], - "src": "7334:0:0" - }, - "scope": 1959, - "src": "7275:712:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1531, - "nodeType": "Block", - "src": "8091:1350:0", - "statements": [ - { - "assignments": [ - 1190 - ], - "declarations": [ - { - "constant": false, - "id": 1190, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8101:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1189, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8101:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1192, - "initialValue": { - "argumentTypes": null, - "id": 1191, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "8113:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8101:23:0" - }, - { - "assignments": [ - 1194 - ], - "declarations": [ - { - "constant": false, - "id": 1194, - "name": "beta", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8134:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1193, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8134:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1196, - "initialValue": { - "argumentTypes": null, - "hexValue": "307837616539366132623635376330373130366536343437396561633334333465393963663034393735313266353839393563313339366332383731393530316565", - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8149:66:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_55594575648329892869085402983802832744385952214688224221778511981742606582254_by_1", - "typeString": "int_const 5559...(69 digits omitted)...2254" - }, - "value": "0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee" - }, - "nodeType": "VariableDeclarationStatement", - "src": "8134:81:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1203, - "name": "iPj", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8226:24:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3][4]" - }, - "typeName": { - "baseType": { - "baseType": { - "id": 1200, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8226:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1201, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8234:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "8226:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "id": 1202, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8237:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8226:13:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_storage_$4_storage_ptr", - "typeString": "uint256[3][4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1204, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8226:24:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1209, - "name": "double", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8260:24:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1207, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8260:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1208, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8268:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "8260:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1210, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8260:24:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1211, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8322:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1212, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8328:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1214, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8331:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8328:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "src": "8322:11:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1216, - "nodeType": "ExpressionStatement", - "src": "8322:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1217, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8343:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1219, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8347:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8343:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1220, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8353:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1222, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8357:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8353:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1223, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8361:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1225, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8365:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8361:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1226, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8369:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1227, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8352:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8343:28:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1229, - "nodeType": "ExpressionStatement", - "src": "8343:28:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1230, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8403:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1232, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8422:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1234, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8426:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8422:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1231, - "name": "doubleJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1047, - "src": "8412:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8412:17:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8403:26:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1237, - "nodeType": "ExpressionStatement", - "src": "8403:26:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1238, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8439:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1240, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1239, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8443:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8439:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1242, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8455:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1243, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8463:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1245, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8467:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8463:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1241, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "8448:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8448:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8439:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1248, - "nodeType": "ExpressionStatement", - "src": "8439:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1249, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8480:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1251, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8484:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8480:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1253, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8496:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1254, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8504:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1256, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1255, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8508:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8504:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1252, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "8489:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8489:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8480:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1259, - "nodeType": "ExpressionStatement", - "src": "8480:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1260, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8521:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1262, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8525:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8521:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1264, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8537:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1265, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8545:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1267, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8549:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8545:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1263, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "8530:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8530:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8521:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1270, - "nodeType": "ExpressionStatement", - "src": "8521:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1271, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8590:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1274, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1272, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8593:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8590:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1275, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8596:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8590:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1277, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8609:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1278, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8615:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1280, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1279, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8619:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8615:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1281, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8623:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1276, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8602:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8602:23:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1283, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8627:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1285, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8631:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8627:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1286, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8635:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1287, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8601:36:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8590:47:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1289, - "nodeType": "ExpressionStatement", - "src": "8590:47:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1290, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8654:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1293, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8657:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8654:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1294, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1292, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8660:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8654:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1296, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8673:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1297, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8679:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1299, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1298, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8683:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8679:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1301, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1300, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8686:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8679:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1302, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8690:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1295, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8666:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8666:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1304, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8694:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1306, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8698:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8694:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1308, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8701:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8694:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1309, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8705:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1311, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1310, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8709:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8705:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1313, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1312, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8712:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8705:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1314, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8665:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8654:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1316, - "nodeType": "ExpressionStatement", - "src": "8654:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1317, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8725:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1320, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8728:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8725:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1321, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1319, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8731:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8725:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1323, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8744:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1324, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8750:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1326, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1325, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8754:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8750:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1328, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8757:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8750:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1329, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8761:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1322, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8737:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8737:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1331, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8765:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1333, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1332, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8769:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8765:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1335, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1334, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8772:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8765:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1336, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8776:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1338, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1337, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8780:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8776:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1340, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8783:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8776:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1341, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8736:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8725:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1343, - "nodeType": "ExpressionStatement", - "src": "8725:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1344, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8796:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1347, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8799:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8796:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1348, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1346, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8802:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8796:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1350, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "8815:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1351, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8821:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1353, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8825:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8821:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1355, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8828:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8821:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1356, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "8832:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1349, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "8808:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8808:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1358, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8836:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1360, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8840:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8836:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1362, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8843:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8836:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1363, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8847:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1365, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1364, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8851:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8847:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1367, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1366, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8854:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8847:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1368, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8807:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8796:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1370, - "nodeType": "ExpressionStatement", - "src": "8796:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1371, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8895:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1372, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "8901:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1374, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8904:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8901:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "src": "8895:11:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1376, - "nodeType": "ExpressionStatement", - "src": "8895:11:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1377, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8916:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1379, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8920:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8916:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1380, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8926:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1382, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1381, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8930:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8926:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1383, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "8934:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1385, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1384, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8938:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8934:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8942:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1387, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8925:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8916:28:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1389, - "nodeType": "ExpressionStatement", - "src": "8916:28:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1390, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "8980:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1392, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "8999:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1394, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9003:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8999:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1391, - "name": "doubleJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1047, - "src": "8989:9:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8989:17:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "8980:26:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1397, - "nodeType": "ExpressionStatement", - "src": "8980:26:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1398, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9016:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1400, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1399, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9020:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9016:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1402, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "9032:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1403, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9040:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1405, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1404, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9044:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9040:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1401, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "9025:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9025:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9016:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1408, - "nodeType": "ExpressionStatement", - "src": "9016:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1409, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9057:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1411, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9061:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9057:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1413, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "9073:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1414, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9081:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1416, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1415, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9085:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9081:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1412, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "9066:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9066:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9057:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1419, - "nodeType": "ExpressionStatement", - "src": "9057:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1420, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9098:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1422, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1421, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9102:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9098:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1424, - "name": "double", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "9114:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1425, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9122:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1427, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9126:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9122:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1423, - "name": "addJac", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "9107:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view returns (uint256[3] memory)" - } - }, - "id": 1428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9107:22:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9098:31:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1430, - "nodeType": "ExpressionStatement", - "src": "9098:31:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1431, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9167:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1434, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9170:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9167:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1435, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1433, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9173:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9167:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1437, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9186:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1438, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "9192:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1440, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1439, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9196:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9192:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1441, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9200:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1436, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9179:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9179:23:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1443, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "9204:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1445, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9208:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9204:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 1446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9212:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 1447, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9178:36:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9167:47:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1449, - "nodeType": "ExpressionStatement", - "src": "9167:47:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1450, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9231:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1453, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1451, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9234:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9231:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1454, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1452, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9237:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9231:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1456, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9250:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1457, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9256:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1459, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1458, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9260:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9256:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1461, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9263:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9256:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1462, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9267:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1455, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9243:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9243:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1464, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9271:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1466, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1465, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9275:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9271:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1468, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9278:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9271:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1469, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9282:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1471, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9286:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9282:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1473, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1472, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9289:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9282:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1474, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9242:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9231:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1476, - "nodeType": "ExpressionStatement", - "src": "9231:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1477, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9302:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1480, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1478, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9305:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9302:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1481, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1479, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9308:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9302:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1483, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9321:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1484, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9327:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1486, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1485, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9331:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9327:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1488, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1487, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9334:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9327:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1489, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9338:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1482, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9314:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9314:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1491, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9342:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1493, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1492, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9346:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9342:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1495, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1494, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9349:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9342:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1496, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9353:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1498, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9357:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9353:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1500, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1499, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9360:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9353:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1501, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9313:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9302:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1503, - "nodeType": "ExpressionStatement", - "src": "9302:61:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1504, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "9373:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1507, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9376:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9373:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1508, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9379:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9373:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1510, - "name": "beta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "9392:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1511, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9398:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1513, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9402:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9398:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1515, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9405:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9398:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1516, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1190, - "src": "9409:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1509, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "9385:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9385:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1518, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9413:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1520, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9417:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9413:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1522, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9420:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9413:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1523, - "name": "iPj", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1203, - "src": "9424:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1525, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1524, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9428:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9424:6:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1527, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9431:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9424:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1528, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9384:50:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "9373:61:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - }, - "id": 1530, - "nodeType": "ExpressionStatement", - "src": "9373:61:0" - } - ] - }, - "documentation": null, - "id": 1532, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_lookup_sim_mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1187, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1182, - "name": "iP", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8022:26:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3][4][4]" - }, - "typeName": { - "baseType": { - "baseType": { - "baseType": { - "id": 1175, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8022:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1177, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8030:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "8022:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "id": 1179, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8033:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8022:13:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_storage_$4_storage_ptr", - "typeString": "uint256[3][4]" - } - }, - "id": 1181, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8036:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8022:16:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_storage_$4_storage_$4_storage_ptr", - "typeString": "uint256[3][4][4]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1186, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 1532, - "src": "8050:21:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1183, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8050:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1185, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8058:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "8050:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8021:51:0" - }, - "payable": false, - "returnParameters": { - "id": 1188, - "nodeType": "ParameterList", - "parameters": [], - "src": "8091:0:0" - }, - "scope": 1959, - "src": "7997:1444:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1570, - "nodeType": "Block", - "src": "9783:875:0", - "statements": [ - { - "assignments": [ - 1542 - ], - "declarations": [ - { - "constant": false, - "id": 1542, - "name": "sign", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9798:8:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 1541, - "name": "int", - "nodeType": "ElementaryTypeName", - "src": "9798:3:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1552, - "initialValue": { - "argumentTypes": null, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1543, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "9809:1:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9813:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9809:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "31", - "id": 1549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9826:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "id": 1548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9822:3:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int" - }, - "id": 1550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9822:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "9809:19:0", - "trueExpression": { - "argumentTypes": null, - "id": 1547, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9817:2:0", - "subExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9818:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-1_by_1", - "typeString": "int_const -1" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9798:30:0" - }, - { - "assignments": [ - 1554 - ], - "declarations": [ - { - "constant": false, - "id": 1554, - "name": "k", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9838:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1553, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9838:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1560, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 1558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1556, - "name": "sign", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1542, - "src": "9858:4:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 1557, - "name": "d", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "9865:1:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "9858:8:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9850:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": "uint256" - }, - "id": 1559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9850:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9838:29:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1561, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1539, - "src": "9878:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1562, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9887:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9878:10:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1564, - "nodeType": "ExpressionStatement", - "src": "9878:10:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1537, - "isOffset": false, - "isSlot": false, - "src": "9953:3:0", - "valueSize": 1 - } - }, - { - "ptr": { - "declaration": 1537, - "isOffset": false, - "isSlot": false, - "src": "10028:3:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10114:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10164:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10219:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10259:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10246:1:0", - "valueSize": 1 - } - }, - { - "ptr": { - "declaration": 1537, - "isOffset": false, - "isSlot": false, - "src": "10393:3:0", - "valueSize": 1 - } - }, - { - "length": { - "declaration": 1539, - "isOffset": false, - "isSlot": false, - "src": "10398:6:0", - "valueSize": 1 - } - }, - { - "sign": { - "declaration": 1542, - "isOffset": false, - "isSlot": false, - "src": "10419:4:0", - "valueSize": 1 - } - }, - { - "sign": { - "declaration": 1542, - "isOffset": false, - "isSlot": false, - "src": "10437:4:0", - "valueSize": 1 - } - }, - { - "length": { - "declaration": 1539, - "isOffset": false, - "isSlot": false, - "src": "10497:6:0", - "valueSize": 1 - } - }, - { - "length": { - "declaration": 1539, - "isOffset": false, - "isSlot": false, - "src": "10483:6:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10533:1:0", - "valueSize": 1 - } - }, - { - "k": { - "declaration": 1554, - "isOffset": false, - "isSlot": false, - "src": "10524:1:0", - "valueSize": 1 - } - } - ], - "id": 1565, - "nodeType": "InlineAssembly", - "operations": "{\n let ki := 0\n ptr := mload(0x40)\n mstore(0x40, add(ptr, 300))\n for {\n }\n gt(k, 0)\n {\n }\n {\n if and(k, 1)\n {\n ki := mod(k, 16)\n k := add(sub(k, ki), mul(gt(ki, 8), 16))\n mstore8(add(ptr, length), add(mul(ki, sign), sub(8, mul(sign, 8))))\n }\n length := add(length, 1)\n k := div(k, 2)\n }\n}", - "src": "9898:739:0" - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 1566, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1537, - "src": "10639:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1567, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1539, - "src": "10644:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1568, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10638:13:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 1540, - "id": 1569, - "nodeType": "Return", - "src": "10631:20:0" - } - ] - }, - "documentation": "@notice Computes the WNAF representation of an integer, and puts the resulting array of coefficients in memory\n @param d A 256-bit integer\n @return (ptr, length) The pointer to the first coefficient, and the total length of the array", - "id": 1571, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_wnaf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1535, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1534, - "name": "d", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9718:8:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 1533, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "9718:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9717:10:0" - }, - "payable": false, - "returnParameters": { - "id": 1540, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1537, - "name": "ptr", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9755:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1536, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9755:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1539, - "name": "length", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "9768:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1538, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9768:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9754:29:0" - }, - "scope": 1959, - "src": "9703:955:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1662, - "nodeType": "Block", - "src": "11194:423:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1588, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11222:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1590, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11226:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11222:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1591, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11230:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1593, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1592, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11234:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11230:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1587, - "name": "is_on_curve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1958, - "src": "11210:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256,uint256) view returns (bool)" - } - }, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11210:27:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1596, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11253:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1598, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1597, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11257:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11253:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1599, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11261:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1601, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11265:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11261:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1595, - "name": "is_on_curve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1958, - "src": "11241:11:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256,uint256) view returns (bool)" - } - }, - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11241:27:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11210:58:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e76616c696420706f696e7473", - "id": 1604, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11270:16:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_dfa878a6a2e6e151811fe177c18671083315e2284455342448cad3dd65cb3e58", - "typeString": "literal_string \"Invalid points\"" - }, - "value": "Invalid points" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_dfa878a6a2e6e151811fe177c18671083315e2284455342448cad3dd65cb3e58", - "typeString": "literal_string \"Invalid points\"" - } - ], - "id": 1586, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2097, - 2098 - ], - "referencedDeclaration": 2098, - "src": "11202:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11202:85:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1606, - "nodeType": "ExpressionStatement", - "src": "11202:85:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1611, - "name": "wnaf", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11298:22:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1609, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11298:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1610, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11306:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11298:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1612, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11298:22:0" - }, - { - "assignments": [ - 1614 - ], - "declarations": [ - { - "constant": false, - "id": 1614, - "name": "max_count", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11330:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1613, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11330:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1616, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1615, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11350:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11330:21:0" - }, - { - "assignments": [ - 1618 - ], - "declarations": [ - { - "constant": false, - "id": 1618, - "name": "count", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11361:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1617, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11361:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1620, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1619, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11377:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11361:17:0" - }, - { - "body": { - "id": 1652, - "nodeType": "Block", - "src": "11420:141:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1631, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1611, - "src": "11435:4:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1633, - "indexExpression": { - "argumentTypes": null, - "id": 1632, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11440:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "11435:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1634, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "11444:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1635, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "11434:16:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1637, - "name": "k_l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1575, - "src": "11459:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4] memory" - } - }, - "id": 1639, - "indexExpression": { - "argumentTypes": null, - "id": 1638, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11463:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11459:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 1636, - "name": "_wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1571, - "src": "11453:5:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_int256_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (int256) view returns (uint256,uint256)" - } - }, - "id": 1640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11453:13:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "src": "11434:32:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1642, - "nodeType": "ExpressionStatement", - "src": "11434:32:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1643, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "11483:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 1644, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1614, - "src": "11491:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11483:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1651, - "nodeType": "IfStatement", - "src": "11480:71:0", - "trueBody": { - "id": 1650, - "nodeType": "Block", - "src": "11501:50:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1646, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1614, - "src": "11519:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1647, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "11531:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11519:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1649, - "nodeType": "ExpressionStatement", - "src": "11519:17:0" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11411:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 1626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11413:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "11411:3:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1653, - "initializationExpression": { - "assignments": [ - 1622 - ], - "declarations": [ - { - "constant": false, - "id": 1622, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11401:6:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1621, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11401:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1624, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1623, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11408:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11401:8:0" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "11416:3:0", - "subExpression": { - "argumentTypes": null, - "id": 1628, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1622, - "src": "11416:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1630, - "nodeType": "ExpressionStatement", - "src": "11416:3:0" - }, - "nodeType": "ForStatement", - "src": "11397:164:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1654, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1584, - "src": "11571:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1656, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1611, - "src": "11589:4:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - { - "argumentTypes": null, - "id": 1657, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1614, - "src": "11595:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1658, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "11606:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - ], - "id": 1655, - "name": "_sim_mul_wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1906, - "src": "11575:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$4_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$4_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[4] memory,uint256,uint256[4] memory) view returns (uint256[3] memory)" - } - }, - "id": 1659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11575:35:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "src": "11571:39:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "id": 1661, - "nodeType": "ExpressionStatement", - "src": "11571:39:0" - } - ] - }, - "documentation": "@notice Simultaneous multiplication of the form kP + lQ. \n @dev Scalars k and l are expected to be decomposed such that k = k1 + k2 ฮป, and l = l1 + l2 ฮป,\n where ฮป is specific to the endomorphism of the curve\n @param k_l An array with the decomposition of k and l values, i.e., [k1, k2, l1, l2]\n @param P_Q An array with the affine coordinates of both P and Q, i.e., [P1, P2, Q1, Q2]", - "id": 1663, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_sim_mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1575, - "name": "k_l", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11104:20:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4]" - }, - "typeName": { - "baseType": { - "id": 1572, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "11104:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1574, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11111:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11104:9:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_storage_ptr", - "typeString": "int256[4]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1579, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11126:21:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1576, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11126:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1578, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11134:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11126:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11103:45:0" - }, - "payable": false, - "returnParameters": { - "id": 1585, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1584, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "11176:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1581, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11176:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1583, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11181:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "11176:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11175:18:0" - }, - "scope": 1959, - "src": "11086:531:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1905, - "nodeType": "Block", - "src": "11763:1461:0", - "statements": [ - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1688, - "name": "iP", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11773:26:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3][4][4]" - }, - "typeName": { - "baseType": { - "baseType": { - "baseType": { - "id": 1684, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11773:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1685, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11781:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "11773:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "id": 1686, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1682, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11784:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11773:13:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_storage_$4_storage_ptr", - "typeString": "uint256[3][4]" - } - }, - "id": 1687, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1683, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11787:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11773:16:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_storage_$4_storage_$4_storage_ptr", - "typeString": "uint256[3][4][4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1689, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11773:26:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1691, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "11825:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - { - "argumentTypes": null, - "id": 1692, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1673, - "src": "11829:3:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - ], - "id": 1690, - "name": "_lookup_sim_mul", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "11809:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr_$_t_array$_t_uint256_$4_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory[4] memory[4] memory,uint256[4] memory) view" - } - }, - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:24:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1694, - "nodeType": "ExpressionStatement", - "src": "11809:24:0" - }, - { - "assignments": [ - 1696 - ], - "declarations": [ - { - "constant": false, - "id": 1696, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11861:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1695, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11861:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1698, - "initialValue": { - "argumentTypes": null, - "id": 1697, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1669, - "src": "11873:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11861:18:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1700, - "name": "ki", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11889:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1699, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11889:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1701, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11889:10:0" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1703, - "name": "ptr", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11909:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1702, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1704, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "11909:11:0" - }, - { - "body": { - "id": 1903, - "nodeType": "Block", - "src": "11943:1275:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "11957:3:0", - "subExpression": { - "argumentTypes": null, - "id": 1708, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "11957:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1710, - "nodeType": "ExpressionStatement", - "src": "11957:3:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1712, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "11989:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "id": 1711, - "name": "doubleMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1174, - "src": "11975:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory) view" - } - }, - "id": 1713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11975:16:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1714, - "nodeType": "ExpressionStatement", - "src": "11975:16:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 1721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1715, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12006:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1716, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12012:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1718, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1717, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12021:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12012:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1719, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12026:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12012:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12006:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1722, - "nodeType": "ExpressionStatement", - "src": "12006:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12088:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12068:2:0", - "valueSize": 1 - } - } - ], - "id": 1723, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12041:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1724, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12125:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12130:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "12125:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1742, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12214:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12219:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12214:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1760, - "nodeType": "IfStatement", - "src": "12210:82:0", - "trueBody": { - "id": 1759, - "nodeType": "Block", - "src": "12222:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1746, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12254:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1747, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12257:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1749, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1748, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12260:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12257:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1756, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1750, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12264:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1751, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12269:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "12264:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1753, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12263:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1754, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12274:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12263:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12257:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1745, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12240:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12240:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1758, - "nodeType": "ExpressionStatement", - "src": "12240:37:0" - } - ] - } - }, - "id": 1761, - "nodeType": "IfStatement", - "src": "12121:171:0", - "trueBody": { - "id": 1741, - "nodeType": "Block", - "src": "12133:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1728, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12165:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1729, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12168:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1731, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1730, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12168:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1738, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12175:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1733, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12180:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12175:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1735, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12174:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1736, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12186:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12174:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12168:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1727, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "12151:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1739, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12151:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1740, - "nodeType": "ExpressionStatement", - "src": "12151:38:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 1768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1762, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12306:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1763, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12312:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1765, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12321:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12312:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1766, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12326:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12312:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12306:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1769, - "nodeType": "ExpressionStatement", - "src": "12306:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12388:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12368:2:0", - "valueSize": 1 - } - } - ], - "id": 1770, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12341:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1771, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12425:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1772, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12430:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "12425:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1789, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12514:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1790, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12519:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12514:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1807, - "nodeType": "IfStatement", - "src": "12510:82:0", - "trueBody": { - "id": 1806, - "nodeType": "Block", - "src": "12522:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1793, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12554:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1794, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12557:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1796, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1795, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12560:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12557:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1803, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1797, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12564:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12569:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "12564:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1800, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12563:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1801, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12574:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12563:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12557:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1792, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12540:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12540:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1805, - "nodeType": "ExpressionStatement", - "src": "12540:37:0" - } - ] - } - }, - "id": 1808, - "nodeType": "IfStatement", - "src": "12421:171:0", - "trueBody": { - "id": 1788, - "nodeType": "Block", - "src": "12433:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1775, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12465:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1776, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12468:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1778, - "indexExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1777, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12471:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12468:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1785, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12475:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1780, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12480:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12475:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1782, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12474:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1783, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12486:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12474:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12468:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1774, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "12451:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12451:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1787, - "nodeType": "ExpressionStatement", - "src": "12451:38:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1809, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12607:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1810, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12613:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1812, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1811, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12622:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12613:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1813, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12627:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12613:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12607:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "12607:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12689:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12669:2:0", - "valueSize": 1 - } - } - ], - "id": 1817, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12642:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1818, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12726:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1819, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12731:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "12726:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1838, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1836, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12815:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1837, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12820:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12815:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1854, - "nodeType": "IfStatement", - "src": "12811:82:0", - "trueBody": { - "id": 1853, - "nodeType": "Block", - "src": "12823:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1840, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12855:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1841, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12858:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1843, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12861:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12858:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1850, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1844, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12865:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1845, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12870:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "12865:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1847, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12864:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12875:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12864:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12858:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1839, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12841:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1851, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12841:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1852, - "nodeType": "ExpressionStatement", - "src": "12841:37:0" - } - ] - } - }, - "id": 1855, - "nodeType": "IfStatement", - "src": "12722:171:0", - "trueBody": { - "id": 1835, - "nodeType": "Block", - "src": "12734:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1822, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "12766:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1823, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12769:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1825, - "indexExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1824, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12772:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12769:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1832, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12776:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1827, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "12781:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12776:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1829, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "12775:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12787:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "12775:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12769:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1821, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "12752:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12752:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "12752:38:0" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1856, - "name": "ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "12908:3:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1857, - "name": "wnaf_ptr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "12914:8:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 1859, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1858, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12923:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12914:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1860, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "12928:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12914:15:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12908:21:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1863, - "nodeType": "ExpressionStatement", - "src": "12908:21:0" - }, - { - "externalReferences": [ - { - "ptr": { - "declaration": 1703, - "isOffset": false, - "isSlot": false, - "src": "12990:3:0", - "valueSize": 1 - } - }, - { - "ki": { - "declaration": 1700, - "isOffset": false, - "isSlot": false, - "src": "12970:2:0", - "valueSize": 1 - } - } - ], - "id": 1864, - "nodeType": "InlineAssembly", - "operations": "{\n ki := byte(0, mload(ptr))\n}", - "src": "12943:82:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1865, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13027:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13032:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "13027:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1883, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13116:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13121:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "13116:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1901, - "nodeType": "IfStatement", - "src": "13112:82:0", - "trueBody": { - "id": 1900, - "nodeType": "Block", - "src": "13124:70:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1887, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "13156:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1888, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "13159:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1890, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1889, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13162:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13159:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1897, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1891, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13166:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "13166:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1894, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13165:8:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1895, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13176:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "13165:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13159:19:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1886, - "name": "addJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "13142:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13142:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1899, - "nodeType": "ExpressionStatement", - "src": "13142:37:0" - } - ] - } - }, - "id": 1902, - "nodeType": "IfStatement", - "src": "13023:171:0", - "trueBody": { - "id": 1882, - "nodeType": "Block", - "src": "13035:71:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1869, - "name": "Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1678, - "src": "13067:1:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1870, - "name": "iP", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "13070:2:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_array$_t_uint256_$3_memory_$4_memory_$4_memory_ptr", - "typeString": "uint256[3] memory[4] memory[4] memory" - } - }, - "id": 1872, - "indexExpression": { - "argumentTypes": null, - "hexValue": "33", - "id": 1871, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13073:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13070:5:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_uint256_$3_memory_$4_memory", - "typeString": "uint256[3] memory[4] memory" - } - }, - "id": 1879, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1878, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3135", - "id": 1873, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13077:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 1874, - "name": "ki", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1700, - "src": "13082:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13077:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1876, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13076:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13088:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "13076:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13070:20:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory", - "typeString": "uint256[3] memory" - } - ], - "id": 1868, - "name": "subJacMutates", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 916, - "src": "13053:13:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$__$", - "typeString": "function (uint256[3] memory,uint256[3] memory) view" - } - }, - "id": 1880, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13053:38:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1881, - "nodeType": "ExpressionStatement", - "src": "13053:38:0" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1705, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1696, - "src": "11936:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1706, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11940:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "11936:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1904, - "nodeType": "WhileStatement", - "src": "11930:1288:0" - } - ] - }, - "documentation": null, - "id": 1906, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "_sim_mul_wnaf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1674, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1667, - "name": "wnaf_ptr", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11651:26:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11651:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1666, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11659:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11651:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1669, - "name": "length", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11679:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1668, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11679:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1673, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11695:21:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1670, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11695:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1672, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11703:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "11695:10:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11650:67:0" - }, - "payable": false, - "returnParameters": { - "id": 1679, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1678, - "name": "Q", - "nodeType": "VariableDeclaration", - "scope": 1906, - "src": "11745:16:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 1675, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11745:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1677, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 1676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11750:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "11745:7:0", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11744:18:0" - }, - "scope": 1959, - "src": "11628:1596:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1957, - "nodeType": "Block", - "src": "13306:248:0", - "statements": [ - { - "assignments": [ - 1916 - ], - "declarations": [ - { - "constant": false, - "id": 1916, - "name": "p", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13316:9:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1915, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13316:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1918, - "initialValue": { - "argumentTypes": null, - "id": 1917, - "name": "field_order", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4, - "src": "13328:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13316:23:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1919, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13354:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1920, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13360:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13354:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1922, - "name": "Py", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "13365:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1923, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13371:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13365:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "13354:18:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1928, - "nodeType": "IfStatement", - "src": "13350:48:0", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1926, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13393:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1914, - "id": 1927, - "nodeType": "Return", - "src": "13386:12:0" - } - }, - { - "assignments": [ - 1930 - ], - "declarations": [ - { - "constant": false, - "id": 1930, - "name": "y2", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13409:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1929, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13409:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1936, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1932, - "name": "Py", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "13429:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1933, - "name": "Py", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1910, - "src": "13433:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1934, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13437:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1931, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "13422:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13422:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13409:30:0" - }, - { - "assignments": [ - 1938 - ], - "declarations": [ - { - "constant": false, - "id": 1938, - "name": "x3_plus_7", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13449:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1937, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13449:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1952, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1942, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13490:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1943, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13494:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1944, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13498:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1941, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "13483:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13483:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1946, - "name": "Px", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1908, - "src": "13502:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1947, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13506:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1940, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2095, - "src": "13476:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13476:32:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "37", - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13510:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - "value": "7" - }, - { - "argumentTypes": null, - "id": 1950, - "name": "p", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1916, - "src": "13513:1:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1939, - "name": "addmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "13469:6:0", - "typeDescriptions": { - "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 1951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13469:46:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13449:66:0" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1953, - "name": "y2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1930, - "src": "13532:2:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1954, - "name": "x3_plus_7", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1938, - "src": "13538:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13532:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1914, - "id": 1956, - "nodeType": "Return", - "src": "13525:22:0" - } - ] - }, - "documentation": null, - "id": 1958, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "is_on_curve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1911, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1908, - "name": "Px", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13251:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1907, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13251:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1910, - "name": "Py", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13263:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1909, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13263:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13250:24:0" - }, - "payable": false, - "returnParameters": { - "id": 1914, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1913, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1958, - "src": "13300:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1912, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "13300:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13299:6:0" - }, - "scope": 1959, - "src": "13230:324:0", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1960, - "src": "162:13395:0" - } - ], - "src": "0:13557:0" - }, - "compiler": { - "name": "solc", - "version": "0.4.24+commit.e67f0147.Emscripten.clang" - }, - "networks": { - "4447": { - "events": {}, - "links": {}, - "address": "0xace937991395b2051613368206066eb2e752a333", - "transactionHash": "0x29398435b17b91111968a25df27138aa2d1401a7ad230ddfebf2e6b1469ae50b" - } - }, - "schemaVersion": "2.0.1", - "updatedAt": "2018-09-10T19:54:35.152Z" -} \ No newline at end of file diff --git a/build/contracts/Verifier.json b/build/contracts/Verifier.json deleted file mode 100644 index 59e9ce6..0000000 --- a/build/contracts/Verifier.json +++ /dev/null @@ -1,3289 +0,0 @@ -{ - "contractName": "Verifier", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "test_proof_verification", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50611ed9806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c47e2dc14610046575b600080fd5b34801561005257600080fd5b5061005b610075565b604051808215151515815260200191505060405180910390f35b600061007f611d94565b610087611db7565b61008f611db7565b600080600061009c611dda565b6100a4611dda565b6080604051908101604052807fffffffffffffffffffffffffffffffffbcdc62ff01d6667a06295857cd6cbfc981526020017fffffffffffffffffffffffffffffffffd777807835a124f17f54707254d8ee2b81526020017fffffffffffffffffffffffffffffffff74aaf596278f006c7d0e7291ff9e56fa81526020017ffffffffffffffffffffffffffffffffffa4b0c0573e9acd35ff0cc4329fc9da081525097506080604051908101604052807f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179881526020017f483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b881526020017fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee581526020017f1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a81525096506000945060009350600092505b60048310156102515761021d888460048110151561021357fe5b60200201516103c8565b878560048110151561022b57fe5b6020020181965082815250505084841115610244578394505b82806001019350506101f9565b61025c86868961046e565b91506060604051908101604052807f7635e27fba8e1f779dcfdde1b1eacbe0571fbe39ecf6056d29ba4bd3ef5e22f281526020017f197888e5cec769ac2f1eb65dbcbc0e49c00a8cdf01f8030d8286b68c1933fb1881526020016001815250905073__Numerology____________________________63ec0a39ad83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600360200280838360005b8381101561032f578082015181840152602081019050610314565b5050505090500182600360200280838360005b8381101561035d578082015181840152602081019050610342565b505050509050019250505060206040518083038186803b15801561038057600080fd5b505af4158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b81019080805190602001909291905050509850505050505050505090565b600080600080600085126103dd5760016103ff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b91508482029050600092506000604051945061012c85016040525b600082111561046057600182161561044f57601082069050601060088211028183030191506008830260080383820201848601535b60018401935060028204915061041a565b508383935093505050915091565b610476611dda565b61047e611dfd565b600080600061048d848761078c565b8692505b6000831115610781578280600190039350506104ac85610fcb565b828860006004811015156104bc57fe5b6020020151019050805160001a9150600882111561051757610512858560006004811015156104e757fe5b6020020151600285600f038115156104fb57fe5b0460048110151561050857fe5b6020020151611199565b610560565b600082111561055f5761055e8585600060048110151561053357fe5b602002015160026001860381151561054757fe5b0460048110151561055457fe5b60200201516114a9565b5b5b8288600160048110151561057057fe5b6020020151019050805160001a915060088211156105cb576105c68585600160048110151561059b57fe5b6020020151600285600f038115156105af57fe5b046004811015156105bc57fe5b6020020151611199565b610614565b600082111561061357610612858560016004811015156105e757fe5b60200201516002600186038115156105fb57fe5b0460048110151561060857fe5b60200201516114a9565b5b5b8288600260048110151561062457fe5b6020020151019050805160001a9150600882111561067f5761067a8585600260048110151561064f57fe5b6020020151600285600f0381151561066357fe5b0460048110151561067057fe5b6020020151611199565b6106c8565b60008211156106c7576106c68585600260048110151561069b57fe5b60200201516002600186038115156106af57fe5b046004811015156106bc57fe5b60200201516114a9565b5b5b828860036004811015156106d857fe5b6020020151019050805160001a915060088211156107335761072e8585600360048110151561070357fe5b6020020151600285600f0381151561071757fe5b0460048110151561072457fe5b6020020151611199565b61077c565b600082111561077b5761077a8585600360048110151561074f57fe5b602002015160026001860381151561076357fe5b0460048110151561077057fe5b60200201516114a9565b5b5b610491565b505050509392505050565b600080610797611e2c565b61079f611dda565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f93507f7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee92508560006004811015156107f457fe5b6020020151915060606040519081016040528086600060048110151561081657fe5b6020020151815260200186600160048110151561082f57fe5b60200201518152602001600181525082600060048110151561084d57fe5b602002018190525061087182600060048110151561086757fe5b60200201516117a4565b90506108908183600060048110151561088657fe5b602002015161197c565b82600160048110151561089f57fe5b60200201819052506108c4818360016004811015156108ba57fe5b602002015161197c565b8260026004811015156108d357fe5b60200201819052506108f8818360026004811015156108ee57fe5b602002015161197c565b82600360048110151561090757fe5b60200201819052506060604051908101604052808580151561092557fe5b87600060048110151561093457fe5b60200201518609815260200186600160048110151561094f57fe5b60200201518152602001600181525086600160048110151561096d57fe5b6020020151600060048110151561098057fe5b60200201819052506060604051908101604052808580151561099e57fe5b8460016004811015156109ad57fe5b602002015160006003811015156109c057fe5b6020020151860981526020018360016004811015156109db57fe5b602002015160016003811015156109ee57fe5b60200201518152602001836001600481101515610a0757fe5b60200201516002600381101515610a1a57fe5b6020020151815250866001600481101515610a3157fe5b60200201516001600481101515610a4457fe5b602002018190525060606040519081016040528085801515610a6257fe5b846002600481101515610a7157fe5b60200201516000600381101515610a8457fe5b602002015186098152602001836002600481101515610a9f57fe5b60200201516001600381101515610ab257fe5b60200201518152602001836002600481101515610acb57fe5b60200201516002600381101515610ade57fe5b6020020151815250866001600481101515610af557fe5b60200201516002600481101515610b0857fe5b602002018190525060606040519081016040528085801515610b2657fe5b846003600481101515610b3557fe5b60200201516000600381101515610b4857fe5b602002015186098152602001836003600481101515610b6357fe5b60200201516001600381101515610b7657fe5b60200201518152602001836003600481101515610b8f57fe5b60200201516002600381101515610ba257fe5b6020020151815250866001600481101515610bb957fe5b60200201516003600481101515610bcc57fe5b6020020181905250856002600481101515610be357fe5b60200201519150606060405190810160405280866002600481101515610c0557fe5b60200201518152602001866003600481101515610c1e57fe5b602002015181526020016001815250826000600481101515610c3c57fe5b6020020181905250610c60826000600481101515610c5657fe5b60200201516117a4565b9050610c7f81836000600481101515610c7557fe5b602002015161197c565b826001600481101515610c8e57fe5b6020020181905250610cb381836001600481101515610ca957fe5b602002015161197c565b826002600481101515610cc257fe5b6020020181905250610ce781836002600481101515610cdd57fe5b602002015161197c565b826003600481101515610cf657fe5b602002018190525060606040519081016040528085801515610d1457fe5b876002600481101515610d2357fe5b602002015186098152602001866003600481101515610d3e57fe5b602002015181526020016001815250866003600481101515610d5c57fe5b60200201516000600481101515610d6f57fe5b602002018190525060606040519081016040528085801515610d8d57fe5b846001600481101515610d9c57fe5b60200201516000600381101515610daf57fe5b602002015186098152602001836001600481101515610dca57fe5b60200201516001600381101515610ddd57fe5b60200201518152602001836001600481101515610df657fe5b60200201516002600381101515610e0957fe5b6020020151815250866003600481101515610e2057fe5b60200201516001600481101515610e3357fe5b602002018190525060606040519081016040528085801515610e5157fe5b846002600481101515610e6057fe5b60200201516000600381101515610e7357fe5b602002015186098152602001836002600481101515610e8e57fe5b60200201516001600381101515610ea157fe5b60200201518152602001836002600481101515610eba57fe5b60200201516002600381101515610ecd57fe5b6020020151815250866003600481101515610ee457fe5b60200201516002600481101515610ef757fe5b602002018190525060606040519081016040528085801515610f1557fe5b846003600481101515610f2457fe5b60200201516000600381101515610f3757fe5b602002015186098152602001836003600481101515610f5257fe5b60200201516001600381101515610f6557fe5b60200201518152602001836003600481101515610f7e57fe5b60200201516002600381101515610f9157fe5b6020020151815250866003600481101515610fa857fe5b60200201516003600481101515610fbb57fe5b6020020181905250505050505050565b600080600080600080600080886002600381101515610fe657fe5b602002015197506000881415610ffb5761118e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f965088600060038110151561102d57fe5b602002015195508680151561103e57fe5b89600160038110151561104d57fe5b602002015160020994508680151561106157fe5b85860993508680151561107057fe5b86850992508680151561107f57fe5b8780151561108957fe5b87880960030991508680151561109b57fe5b878015156110a557fe5b847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d09888015156110d257fe5b848509089050808960006003811015156110e857fe5b602002018181525050868015156110fb57fe5b8780151561110557fe5b8880151561110f57fe5b8687097f7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17098880151561113e57fe5b8980151561114857fe5b848b03870885090889600160038110151561115f57fe5b6020020181815250508680151561117257fe5b88860989600260038110151561118457fe5b6020020181815250505b505050505050505050565b60008060008060008060008060008060008c60026003811015156111b957fe5b60200201519a508b60026003811015156111cf57fe5b602002015199507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f985060008b141561127a578b600060038110151561121157fe5b60200201518d600060038110151561122557fe5b6020020181815250508b600160038110151561123d57fe5b602002015189038d600160038110151561125357fe5b602002018181525050898d600260038110151561126c57fe5b60200201818152505061149a565b60008a14156112885761149a565b8880151561129257fe5b8b8c099750888015156112a157fe5b888d60006003811015156112b157fe5b6020020151099650888015156112c357fe5b898015156112cd57fe5b898d098d60016003811015156112df57fe5b60200201518b03099550888015156112f357fe5b8a8b0997508880151561130257fe5b888e600060038110151561131257fe5b60200201510994508880151561132457fe5b8980151561132e57fe5b898c098e600160038110151561134057fe5b6020020151099350868514801561135657508584145b1561137a5760008d600260038110151561136c57fe5b60200201818152505061149a565b8880151561138457fe5b848a03870895508880151561139557fe5b858a0388089250888015156113a657fe5b8384099150888015156113b557fe5b8286099650888015156113c457fe5b8383099150888015156113d357fe5b898015156113dd57fe5b838b8015156113e857fe5b8a600209088a038a8015156113f957fe5b888909089050808d600060038110151561140f57fe5b6020020181815250508880151561142257fe5b8980151561142c57fe5b828b038908870990508880151561143f57fe5b8980151561144957fe5b8386098a0382088d600160038110151561145f57fe5b6020020181815250508880151561147257fe5b8980151561147c57fe5b8b8d0984098d600260038110151561149057fe5b6020020181815250505b50505050505050505050505050565b60008060008060008060008060008060008c60026003811015156114c957fe5b60200201519a508b60026003811015156114df57fe5b6020020151995060008b1415611565578b60006003811015156114fe57fe5b60200201518d600060038110151561151257fe5b6020020181815250508b600160038110151561152a57fe5b60200201518d600160038110151561153e57fe5b602002018181525050898d600260038110151561155757fe5b602002018181525050611795565b60008a141561157357611795565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f9850888015156115a057fe5b8b8c099750888015156115af57fe5b888d60006003811015156115bf57fe5b6020020151099650888015156115d157fe5b898015156115db57fe5b898d098d60016003811015156115ed57fe5b6020020151099550888015156115ff57fe5b8a8b0997508880151561160e57fe5b888e600060038110151561161e57fe5b60200201510994508880151561163057fe5b8980151561163a57fe5b898c098e600160038110151561164c57fe5b6020020151099350868514801561166257508584145b15611675576116708d610fcb565b611795565b8880151561167f57fe5b848a03870895508880151561169057fe5b858a0388089250888015156116a157fe5b8384099150888015156116b057fe5b8286099650888015156116bf57fe5b8383099150888015156116ce57fe5b898015156116d857fe5b838b8015156116e357fe5b8a600209088a038a8015156116f457fe5b888909089050808d600060038110151561170a57fe5b6020020181815250508880151561171d57fe5b8980151561172757fe5b828b038908870990508880151561173a57fe5b8980151561174457fe5b8386098a0382088d600160038110151561175a57fe5b6020020181815250508880151561176d57fe5b8980151561177757fe5b8b8d0984098d600260038110151561178b57fe5b6020020181815250505b50505050505050505050505050565b6117ac611dda565b6000806000806000806000808960026003811015156117c757fe5b6020020151975060008814156117dc5761196f565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f965089600060038110151561180e57fe5b602002015195508680151561181f57fe5b8a600160038110151561182e57fe5b602002015160020994508680151561184257fe5b85860993508680151561185157fe5b86850992508680151561186057fe5b8780151561186a57fe5b87880960030991508680151561187c57fe5b8780151561188657fe5b847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d09888015156118b357fe5b848509089050808960006003811015156118c957fe5b602002018181525050868015156118dc57fe5b878015156118e657fe5b888015156118f057fe5b8687097f7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17098880151561191f57fe5b8980151561192957fe5b848b03870885090889600160038110151561194057fe5b6020020181815250508680151561195357fe5b88860989600260038110151561196557fe5b6020020181815250505b5050505050505050919050565b611984611dda565b600080600080600080600080611998611dda565b6000808d60026003811015156119aa57fe5b602002015114156119bd578b9a50611d84565b60008c60026003811015156119ce57fe5b602002015114156119e1578c9a50611d84565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f995089801515611a0e57fe5b8d6002600381101515611a1d57fe5b60200201518e6002600381101515611a3157fe5b602002015109985089801515611a4357fe5b8c6002600381101515611a5257fe5b60200201518d6002600381101515611a6657fe5b602002015109975089801515611a7857fe5b888e6000600381101515611a8857fe5b602002015109965089801515611a9a57fe5b8a801515611aa457fe5b898e6002600381101515611ab457fe5b6020020151098e6001600381101515611ac957fe5b602002015109955089801515611adb57fe5b898d6000600381101515611aeb57fe5b602002015109945089801515611afd57fe5b8a801515611b0757fe5b8a8f6002600381101515611b1757fe5b6020020151098d6001600381101515611b2c57fe5b60200201510993508487148015611b4257508386145b15611b5757611b508d6117a4565b9a50611d84565b89801515611b6157fe5b868b038508925089801515611b7257fe5b878b038608826000600381101515611b8657fe5b60200201818152505089801515611b9957fe5b826000600381101515611ba857fe5b6020020151836000600381101515611bbc57fe5b602002015109826001600381101515611bd157fe5b60200201818152505089801515611be457fe5b826000600381101515611bf357fe5b6020020151836001600381101515611c0757fe5b602002015109826002600381101515611c1c57fe5b60200201818152505089801515611c2f57fe5b826001600381101515611c3e57fe5b60200201518809905089801515611c5157fe5b8a801515611c5b57fe5b836002600381101515611c6a57fe5b60200201518c801515611c7957fe5b84600209088b038b801515611c8a57fe5b858609088b6000600381101515611c9d57fe5b60200201818152505089801515611cb057fe5b8a801515611cba57fe5b836002600381101515611cc957fe5b602002015188098b038b801515611cdc57fe5b8c801515611ce657fe5b8e6000600381101515611cf557fe5b60200201518e0385088609088b6001600381101515611d1057fe5b60200201818152505089801515611d2357fe5b8a801515611d2d57fe5b8d6002600381101515611d3c57fe5b60200201518f6002600381101515611d5057fe5b602002015109836000600381101515611d6557fe5b6020020151098b6002600381101515611d7a57fe5b6020020181815250505b5050505050505050505092915050565b608060405190810160405280600490602082028038833980820191505090505090565b608060405190810160405280600490602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b610600604051908101604052806004905b611e16611e5b565b815260200190600190039081611e0e5790505090565b610180604051908101604052806004905b611e45611e8a565b815260200190600190039081611e3d5790505090565b610180604051908101604052806004905b611e74611e8a565b815260200190600190039081611e6c5790505090565b6060604051908101604052806003906020820280388339808201915050905050905600a165627a7a72305820e71e3b01fa59a5298c80cb315b76663f1f2f8e83b695bf4cebef6710442f59e30029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630c47e2dc14610046575b600080fd5b34801561005257600080fd5b5061005b610075565b604051808215151515815260200191505060405180910390f35b600061007f611d94565b610087611db7565b61008f611db7565b600080600061009c611dda565b6100a4611dda565b6080604051908101604052807fffffffffffffffffffffffffffffffffbcdc62ff01d6667a06295857cd6cbfc981526020017fffffffffffffffffffffffffffffffffd777807835a124f17f54707254d8ee2b81526020017fffffffffffffffffffffffffffffffff74aaf596278f006c7d0e7291ff9e56fa81526020017ffffffffffffffffffffffffffffffffffa4b0c0573e9acd35ff0cc4329fc9da081525097506080604051908101604052807f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179881526020017f483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b881526020017fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee581526020017f1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a81525096506000945060009350600092505b60048310156102515761021d888460048110151561021357fe5b60200201516103c8565b878560048110151561022b57fe5b6020020181965082815250505084841115610244578394505b82806001019350506101f9565b61025c86868961046e565b91506060604051908101604052807f7635e27fba8e1f779dcfdde1b1eacbe0571fbe39ecf6056d29ba4bd3ef5e22f281526020017f197888e5cec769ac2f1eb65dbcbc0e49c00a8cdf01f8030d8286b68c1933fb1881526020016001815250905073__Numerology____________________________63ec0a39ad83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600360200280838360005b8381101561032f578082015181840152602081019050610314565b5050505090500182600360200280838360005b8381101561035d578082015181840152602081019050610342565b505050509050019250505060206040518083038186803b15801561038057600080fd5b505af4158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b81019080805190602001909291905050509850505050505050505090565b600080600080600085126103dd5760016103ff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b91508482029050600092506000604051945061012c85016040525b600082111561046057600182161561044f57601082069050601060088211028183030191506008830260080383820201848601535b60018401935060028204915061041a565b508383935093505050915091565b610476611dda565b61047e611dfd565b600080600061048d848761078c565b8692505b6000831115610781578280600190039350506104ac85610fcb565b828860006004811015156104bc57fe5b6020020151019050805160001a9150600882111561051757610512858560006004811015156104e757fe5b6020020151600285600f038115156104fb57fe5b0460048110151561050857fe5b6020020151611199565b610560565b600082111561055f5761055e8585600060048110151561053357fe5b602002015160026001860381151561054757fe5b0460048110151561055457fe5b60200201516114a9565b5b5b8288600160048110151561057057fe5b6020020151019050805160001a915060088211156105cb576105c68585600160048110151561059b57fe5b6020020151600285600f038115156105af57fe5b046004811015156105bc57fe5b6020020151611199565b610614565b600082111561061357610612858560016004811015156105e757fe5b60200201516002600186038115156105fb57fe5b0460048110151561060857fe5b60200201516114a9565b5b5b8288600260048110151561062457fe5b6020020151019050805160001a9150600882111561067f5761067a8585600260048110151561064f57fe5b6020020151600285600f0381151561066357fe5b0460048110151561067057fe5b6020020151611199565b6106c8565b60008211156106c7576106c68585600260048110151561069b57fe5b60200201516002600186038115156106af57fe5b046004811015156106bc57fe5b60200201516114a9565b5b5b828860036004811015156106d857fe5b6020020151019050805160001a915060088211156107335761072e8585600360048110151561070357fe5b6020020151600285600f0381151561071757fe5b0460048110151561072457fe5b6020020151611199565b61077c565b600082111561077b5761077a8585600360048110151561074f57fe5b602002015160026001860381151561076357fe5b0460048110151561077057fe5b60200201516114a9565b5b5b610491565b505050509392505050565b600080610797611e2c565b61079f611dda565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f93507f7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee92508560006004811015156107f457fe5b6020020151915060606040519081016040528086600060048110151561081657fe5b6020020151815260200186600160048110151561082f57fe5b60200201518152602001600181525082600060048110151561084d57fe5b602002018190525061087182600060048110151561086757fe5b60200201516117a4565b90506108908183600060048110151561088657fe5b602002015161197c565b82600160048110151561089f57fe5b60200201819052506108c4818360016004811015156108ba57fe5b602002015161197c565b8260026004811015156108d357fe5b60200201819052506108f8818360026004811015156108ee57fe5b602002015161197c565b82600360048110151561090757fe5b60200201819052506060604051908101604052808580151561092557fe5b87600060048110151561093457fe5b60200201518609815260200186600160048110151561094f57fe5b60200201518152602001600181525086600160048110151561096d57fe5b6020020151600060048110151561098057fe5b60200201819052506060604051908101604052808580151561099e57fe5b8460016004811015156109ad57fe5b602002015160006003811015156109c057fe5b6020020151860981526020018360016004811015156109db57fe5b602002015160016003811015156109ee57fe5b60200201518152602001836001600481101515610a0757fe5b60200201516002600381101515610a1a57fe5b6020020151815250866001600481101515610a3157fe5b60200201516001600481101515610a4457fe5b602002018190525060606040519081016040528085801515610a6257fe5b846002600481101515610a7157fe5b60200201516000600381101515610a8457fe5b602002015186098152602001836002600481101515610a9f57fe5b60200201516001600381101515610ab257fe5b60200201518152602001836002600481101515610acb57fe5b60200201516002600381101515610ade57fe5b6020020151815250866001600481101515610af557fe5b60200201516002600481101515610b0857fe5b602002018190525060606040519081016040528085801515610b2657fe5b846003600481101515610b3557fe5b60200201516000600381101515610b4857fe5b602002015186098152602001836003600481101515610b6357fe5b60200201516001600381101515610b7657fe5b60200201518152602001836003600481101515610b8f57fe5b60200201516002600381101515610ba257fe5b6020020151815250866001600481101515610bb957fe5b60200201516003600481101515610bcc57fe5b6020020181905250856002600481101515610be357fe5b60200201519150606060405190810160405280866002600481101515610c0557fe5b60200201518152602001866003600481101515610c1e57fe5b602002015181526020016001815250826000600481101515610c3c57fe5b6020020181905250610c60826000600481101515610c5657fe5b60200201516117a4565b9050610c7f81836000600481101515610c7557fe5b602002015161197c565b826001600481101515610c8e57fe5b6020020181905250610cb381836001600481101515610ca957fe5b602002015161197c565b826002600481101515610cc257fe5b6020020181905250610ce781836002600481101515610cdd57fe5b602002015161197c565b826003600481101515610cf657fe5b602002018190525060606040519081016040528085801515610d1457fe5b876002600481101515610d2357fe5b602002015186098152602001866003600481101515610d3e57fe5b602002015181526020016001815250866003600481101515610d5c57fe5b60200201516000600481101515610d6f57fe5b602002018190525060606040519081016040528085801515610d8d57fe5b846001600481101515610d9c57fe5b60200201516000600381101515610daf57fe5b602002015186098152602001836001600481101515610dca57fe5b60200201516001600381101515610ddd57fe5b60200201518152602001836001600481101515610df657fe5b60200201516002600381101515610e0957fe5b6020020151815250866003600481101515610e2057fe5b60200201516001600481101515610e3357fe5b602002018190525060606040519081016040528085801515610e5157fe5b846002600481101515610e6057fe5b60200201516000600381101515610e7357fe5b602002015186098152602001836002600481101515610e8e57fe5b60200201516001600381101515610ea157fe5b60200201518152602001836002600481101515610eba57fe5b60200201516002600381101515610ecd57fe5b6020020151815250866003600481101515610ee457fe5b60200201516002600481101515610ef757fe5b602002018190525060606040519081016040528085801515610f1557fe5b846003600481101515610f2457fe5b60200201516000600381101515610f3757fe5b602002015186098152602001836003600481101515610f5257fe5b60200201516001600381101515610f6557fe5b60200201518152602001836003600481101515610f7e57fe5b60200201516002600381101515610f9157fe5b6020020151815250866003600481101515610fa857fe5b60200201516003600481101515610fbb57fe5b6020020181905250505050505050565b600080600080600080600080886002600381101515610fe657fe5b602002015197506000881415610ffb5761118e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f965088600060038110151561102d57fe5b602002015195508680151561103e57fe5b89600160038110151561104d57fe5b602002015160020994508680151561106157fe5b85860993508680151561107057fe5b86850992508680151561107f57fe5b8780151561108957fe5b87880960030991508680151561109b57fe5b878015156110a557fe5b847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d09888015156110d257fe5b848509089050808960006003811015156110e857fe5b602002018181525050868015156110fb57fe5b8780151561110557fe5b8880151561110f57fe5b8687097f7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17098880151561113e57fe5b8980151561114857fe5b848b03870885090889600160038110151561115f57fe5b6020020181815250508680151561117257fe5b88860989600260038110151561118457fe5b6020020181815250505b505050505050505050565b60008060008060008060008060008060008c60026003811015156111b957fe5b60200201519a508b60026003811015156111cf57fe5b602002015199507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f985060008b141561127a578b600060038110151561121157fe5b60200201518d600060038110151561122557fe5b6020020181815250508b600160038110151561123d57fe5b602002015189038d600160038110151561125357fe5b602002018181525050898d600260038110151561126c57fe5b60200201818152505061149a565b60008a14156112885761149a565b8880151561129257fe5b8b8c099750888015156112a157fe5b888d60006003811015156112b157fe5b6020020151099650888015156112c357fe5b898015156112cd57fe5b898d098d60016003811015156112df57fe5b60200201518b03099550888015156112f357fe5b8a8b0997508880151561130257fe5b888e600060038110151561131257fe5b60200201510994508880151561132457fe5b8980151561132e57fe5b898c098e600160038110151561134057fe5b6020020151099350868514801561135657508584145b1561137a5760008d600260038110151561136c57fe5b60200201818152505061149a565b8880151561138457fe5b848a03870895508880151561139557fe5b858a0388089250888015156113a657fe5b8384099150888015156113b557fe5b8286099650888015156113c457fe5b8383099150888015156113d357fe5b898015156113dd57fe5b838b8015156113e857fe5b8a600209088a038a8015156113f957fe5b888909089050808d600060038110151561140f57fe5b6020020181815250508880151561142257fe5b8980151561142c57fe5b828b038908870990508880151561143f57fe5b8980151561144957fe5b8386098a0382088d600160038110151561145f57fe5b6020020181815250508880151561147257fe5b8980151561147c57fe5b8b8d0984098d600260038110151561149057fe5b6020020181815250505b50505050505050505050505050565b60008060008060008060008060008060008c60026003811015156114c957fe5b60200201519a508b60026003811015156114df57fe5b6020020151995060008b1415611565578b60006003811015156114fe57fe5b60200201518d600060038110151561151257fe5b6020020181815250508b600160038110151561152a57fe5b60200201518d600160038110151561153e57fe5b602002018181525050898d600260038110151561155757fe5b602002018181525050611795565b60008a141561157357611795565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f9850888015156115a057fe5b8b8c099750888015156115af57fe5b888d60006003811015156115bf57fe5b6020020151099650888015156115d157fe5b898015156115db57fe5b898d098d60016003811015156115ed57fe5b6020020151099550888015156115ff57fe5b8a8b0997508880151561160e57fe5b888e600060038110151561161e57fe5b60200201510994508880151561163057fe5b8980151561163a57fe5b898c098e600160038110151561164c57fe5b6020020151099350868514801561166257508584145b15611675576116708d610fcb565b611795565b8880151561167f57fe5b848a03870895508880151561169057fe5b858a0388089250888015156116a157fe5b8384099150888015156116b057fe5b8286099650888015156116bf57fe5b8383099150888015156116ce57fe5b898015156116d857fe5b838b8015156116e357fe5b8a600209088a038a8015156116f457fe5b888909089050808d600060038110151561170a57fe5b6020020181815250508880151561171d57fe5b8980151561172757fe5b828b038908870990508880151561173a57fe5b8980151561174457fe5b8386098a0382088d600160038110151561175a57fe5b6020020181815250508880151561176d57fe5b8980151561177757fe5b8b8d0984098d600260038110151561178b57fe5b6020020181815250505b50505050505050505050505050565b6117ac611dda565b6000806000806000806000808960026003811015156117c757fe5b6020020151975060008814156117dc5761196f565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f965089600060038110151561180e57fe5b602002015195508680151561181f57fe5b8a600160038110151561182e57fe5b602002015160020994508680151561184257fe5b85860993508680151561185157fe5b86850992508680151561186057fe5b8780151561186a57fe5b87880960030991508680151561187c57fe5b8780151561188657fe5b847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2d09888015156118b357fe5b848509089050808960006003811015156118c957fe5b602002018181525050868015156118dc57fe5b878015156118e657fe5b888015156118f057fe5b8687097f7fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffe17098880151561191f57fe5b8980151561192957fe5b848b03870885090889600160038110151561194057fe5b6020020181815250508680151561195357fe5b88860989600260038110151561196557fe5b6020020181815250505b5050505050505050919050565b611984611dda565b600080600080600080600080611998611dda565b6000808d60026003811015156119aa57fe5b602002015114156119bd578b9a50611d84565b60008c60026003811015156119ce57fe5b602002015114156119e1578c9a50611d84565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f995089801515611a0e57fe5b8d6002600381101515611a1d57fe5b60200201518e6002600381101515611a3157fe5b602002015109985089801515611a4357fe5b8c6002600381101515611a5257fe5b60200201518d6002600381101515611a6657fe5b602002015109975089801515611a7857fe5b888e6000600381101515611a8857fe5b602002015109965089801515611a9a57fe5b8a801515611aa457fe5b898e6002600381101515611ab457fe5b6020020151098e6001600381101515611ac957fe5b602002015109955089801515611adb57fe5b898d6000600381101515611aeb57fe5b602002015109945089801515611afd57fe5b8a801515611b0757fe5b8a8f6002600381101515611b1757fe5b6020020151098d6001600381101515611b2c57fe5b60200201510993508487148015611b4257508386145b15611b5757611b508d6117a4565b9a50611d84565b89801515611b6157fe5b868b038508925089801515611b7257fe5b878b038608826000600381101515611b8657fe5b60200201818152505089801515611b9957fe5b826000600381101515611ba857fe5b6020020151836000600381101515611bbc57fe5b602002015109826001600381101515611bd157fe5b60200201818152505089801515611be457fe5b826000600381101515611bf357fe5b6020020151836001600381101515611c0757fe5b602002015109826002600381101515611c1c57fe5b60200201818152505089801515611c2f57fe5b826001600381101515611c3e57fe5b60200201518809905089801515611c5157fe5b8a801515611c5b57fe5b836002600381101515611c6a57fe5b60200201518c801515611c7957fe5b84600209088b038b801515611c8a57fe5b858609088b6000600381101515611c9d57fe5b60200201818152505089801515611cb057fe5b8a801515611cba57fe5b836002600381101515611cc957fe5b602002015188098b038b801515611cdc57fe5b8c801515611ce657fe5b8e6000600381101515611cf557fe5b60200201518e0385088609088b6001600381101515611d1057fe5b60200201818152505089801515611d2357fe5b8a801515611d2d57fe5b8d6002600381101515611d3c57fe5b60200201518f6002600381101515611d5057fe5b602002015109836000600381101515611d6557fe5b6020020151098b6002600381101515611d7a57fe5b6020020181815250505b5050505050505050505092915050565b608060405190810160405280600490602082028038833980820191505090505090565b608060405190810160405280600490602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b610600604051908101604052806004905b611e16611e5b565b815260200190600190039081611e0e5790505090565b610180604051908101604052806004905b611e45611e8a565b815260200190600190039081611e3d5790505090565b610180604051908101604052806004905b611e74611e8a565b815260200190600190039081611e6c5790505090565b6060604051908101604052806003906020820280388339808201915050905050905600a165627a7a72305820e71e3b01fa59a5298c80cb315b76663f1f2f8e83b695bf4cebef6710442f59e30029", - "sourceMap": "54:1525:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54:1525:1;;;;;;;", - "deployedSourceMap": "54:1525:1:-;;;;;;;;;;;;;;;;;;;;;;;;77:1499;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:1499:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;133:4;249:20;;:::i;:::-;561:21;;:::i;:::-;951:22;;:::i;:::-;979:17;1006:13;1042:6;1201:23;;:::i;:::-;1280:26;;:::i;:::-;249:305;;;;;;;;;280:39;249:305;;;;358:39;249:305;;;;435:40;249:305;;;;514:38;249:305;;;;;561:383;;;;;;;;;586:66;561:383;;;;683:66;561:383;;;;780:66;561:383;;;;877:66;561:383;;;;;999:1;979:21;;1022:1;1006:17;;1049:1;1042:8;;1038:153;1054:1;1052;:3;1038:153;;;1090:24;1107:3;1111:1;1107:6;;;;;;;;;;;;;1090:16;:24::i;:::-;1072:4;1077:1;1072:7;;;;;;;;;;;;1071:43;;;;;;;;;1135:9;1127:5;:17;1124:61;;;1169:5;1157:17;;1124:61;1057:3;;;;;;;1038:153;;;1227:46;1252:4;1258:9;1269:3;1227:24;:46::i;:::-;1201:72;;1280:237;;;;;;;;;1310:66;1280:237;;;;1412:66;1280:237;;;;1515:1;1280:237;;;;;1531:10;:22;1554:5;1561:8;1531:39;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1531:39:1;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1531:39:1;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1531:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1531:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1531:39:1;;;;;;;;;;;;;;;;1524:46;;77:1499;;;;;;;;;:::o;9703:955:0:-;9755:11;9768:14;9798:8;9838:9;9813:1;9809;:5;:19;;9826:1;9809:19;;;9817:2;9809:19;9798:30;;9865:1;9858:4;:8;9838:29;;9887:1;9878:10;;9939:1;9966:4;9960:11;9953:18;;10033:3;10028;10024:13;10018:4;10011:27;10103:449;10117:1;10114;10111:8;10103:449;;;10167:1;10164;10160:9;10157:2;;;10222;10219:1;10215:10;10209:16;;10282:2;10278:1;10274:2;10271:9;10267:18;10262:2;10259:1;10255:10;10251:35;10246:40;;10443:1;10437:4;10433:12;10430:1;10426:20;10419:4;10415:2;10411:13;10407:40;10398:6;10393:3;10389:16;10381:67;10157:2;10505:1;10497:6;10493:14;10483:24;;10536:1;10533;10529:9;10524:14;;10103:449;;;9915:706;10639:3;10644:6;10631:20;;;;9703:955;;;;;:::o;11628:1596::-;11745:16;;:::i;:::-;11773:26;;:::i;:::-;11861:9;11889:10;11909:11;11809:24;11825:2;11829:3;11809:15;:24::i;:::-;11873:6;11861:18;;11930:1288;11940:1;11936;:5;11930:1288;;;11957:3;;;;;;;;11975:16;11989:1;11975:13;:16::i;:::-;12026:1;12012:8;12021:1;12012:11;;;;;;;;;;;;;:15;12006:21;;12088:3;12082:10;12079:1;12074:19;12068:25;;12130:1;12125:2;:6;12121:171;;;12151:38;12165:1;12168:2;12171:1;12168:5;;;;;;;;;;;;;12186:1;12180:2;12175;:7;12174:13;;;;;;;;12168:20;;;;;;;;;;;;;12151:13;:38::i;:::-;12121:171;;;12219:1;12214:2;:6;12210:82;;;12240:37;12254:1;12257:2;12260:1;12257:5;;;;;;;;;;;;;12274:1;12269;12264:2;:6;12263:12;;;;;;;;12257:19;;;;;;;;;;;;;12240:13;:37::i;:::-;12210:82;12121:171;12326:1;12312:8;12321:1;12312:11;;;;;;;;;;;;;:15;12306:21;;12388:3;12382:10;12379:1;12374:19;12368:25;;12430:1;12425:2;:6;12421:171;;;12451:38;12465:1;12468:2;12471:1;12468:5;;;;;;;;;;;;;12486:1;12480:2;12475;:7;12474:13;;;;;;;;12468:20;;;;;;;;;;;;;12451:13;:38::i;:::-;12421:171;;;12519:1;12514:2;:6;12510:82;;;12540:37;12554:1;12557:2;12560:1;12557:5;;;;;;;;;;;;;12574:1;12569;12564:2;:6;12563:12;;;;;;;;12557:19;;;;;;;;;;;;;12540:13;:37::i;:::-;12510:82;12421:171;12627:1;12613:8;12622:1;12613:11;;;;;;;;;;;;;:15;12607:21;;12689:3;12683:10;12680:1;12675:19;12669:25;;12731:1;12726:2;:6;12722:171;;;12752:38;12766:1;12769:2;12772:1;12769:5;;;;;;;;;;;;;12787:1;12781:2;12776;:7;12775:13;;;;;;;;12769:20;;;;;;;;;;;;;12752:13;:38::i;:::-;12722:171;;;12820:1;12815:2;:6;12811:82;;;12841:37;12855:1;12858:2;12861:1;12858:5;;;;;;;;;;;;;12875:1;12870;12865:2;:6;12864:12;;;;;;;;12858:19;;;;;;;;;;;;;12841:13;:37::i;:::-;12811:82;12722:171;12928:1;12914:8;12923:1;12914:11;;;;;;;;;;;;;:15;12908:21;;12990:3;12984:10;12981:1;12976:19;12970:25;;13032:1;13027:2;:6;13023:171;;;13053:38;13067:1;13070:2;13073:1;13070:5;;;;;;;;;;;;;13088:1;13082:2;13077;:7;13076:13;;;;;;;;13070:20;;;;;;;;;;;;;13053:13;:38::i;:::-;13023:171;;;13121:1;13116:2;:6;13112:82;;;13142:37;13156:1;13159:2;13162:1;13159:5;;;;;;;;;;;;;13176:1;13171;13166:2;:6;13165:12;;;;;;;;13159:19;;;;;;;;;;;;;13142:13;:37::i;:::-;13112:82;13023:171;11930:1288;;;11628:1596;;;;;;;;;:::o;7997:1444::-;8101:9;8134:12;8226:24;;:::i;:::-;8260;;:::i;:::-;219:66;8101:23;;8149:66;8134:81;;8328:2;8331:1;8328:5;;;;;;;;;;;;;8322:11;;8343:28;;;;;;;;;8353:3;8357:1;8353:6;;;;;;;;;;;;;8343:28;;;;8361:3;8365:1;8361:6;;;;;;;;;;;;;8343:28;;;;8369:1;8343:28;;;:3;8347:1;8343:6;;;;;;;;;;;;:28;;;;8412:17;8422:3;8426:1;8422:6;;;;;;;;;;;;;8412:9;:17::i;:::-;8403:26;;8448:22;8455:6;8463:3;8467:1;8463:6;;;;;;;;;;;;;8448;:22::i;:::-;8439:3;8443:1;8439:6;;;;;;;;;;;;:31;;;;8489:22;8496:6;8504:3;8508:1;8504:6;;;;;;;;;;;;;8489;:22::i;:::-;8480:3;8484:1;8480:6;;;;;;;;;;;;:31;;;;8530:22;8537:6;8545:3;8549:1;8545:6;;;;;;;;;;;;;8530;:22::i;:::-;8521:3;8525:1;8521:6;;;;;;;;;;;;:31;;;;8590:47;;;;;;;;;8623:1;8602:23;;;;;;;8615:3;8619:1;8615:6;;;;;;;;;;;;;8609:4;8602:23;8590:47;;;;8627:3;8631:1;8627:6;;;;;;;;;;;;;8590:47;;;;8635:1;8590:47;;;:2;8593:1;8590:5;;;;;;;;;;;;;8596:1;8590:8;;;;;;;;;;;;:47;;;;8654:61;;;;;;;;;8690:1;8666:26;;;;;;;8679:3;8683:1;8679:6;;;;;;;;;;;;;8686:1;8679:9;;;;;;;;;;;;;8673:4;8666:26;8654:61;;;;8694:3;8698:1;8694:6;;;;;;;;;;;;;8701:1;8694:9;;;;;;;;;;;;;8654:61;;;;8705:3;8709:1;8705:6;;;;;;;;;;;;;8712:1;8705:9;;;;;;;;;;;;;8654:61;;;:2;8657:1;8654:5;;;;;;;;;;;;;8660:1;8654:8;;;;;;;;;;;;:61;;;;8725;;;;;;;;;8761:1;8737:26;;;;;;;8750:3;8754:1;8750:6;;;;;;;;;;;;;8757:1;8750:9;;;;;;;;;;;;;8744:4;8737:26;8725:61;;;;8765:3;8769:1;8765:6;;;;;;;;;;;;;8772:1;8765:9;;;;;;;;;;;;;8725:61;;;;8776:3;8780:1;8776:6;;;;;;;;;;;;;8783:1;8776:9;;;;;;;;;;;;;8725:61;;;:2;8728:1;8725:5;;;;;;;;;;;;;8731:1;8725:8;;;;;;;;;;;;:61;;;;8796;;;;;;;;;8832:1;8808:26;;;;;;;8821:3;8825:1;8821:6;;;;;;;;;;;;;8828:1;8821:9;;;;;;;;;;;;;8815:4;8808:26;8796:61;;;;8836:3;8840:1;8836:6;;;;;;;;;;;;;8843:1;8836:9;;;;;;;;;;;;;8796:61;;;;8847:3;8851:1;8847:6;;;;;;;;;;;;;8854:1;8847:9;;;;;;;;;;;;;8796:61;;;:2;8799:1;8796:5;;;;;;;;;;;;;8802:1;8796:8;;;;;;;;;;;;:61;;;;8901:2;8904:1;8901:5;;;;;;;;;;;;;8895:11;;8916:28;;;;;;;;;8926:3;8930:1;8926:6;;;;;;;;;;;;;8916:28;;;;8934:3;8938:1;8934:6;;;;;;;;;;;;;8916:28;;;;8942:1;8916:28;;;:3;8920:1;8916:6;;;;;;;;;;;;:28;;;;8989:17;8999:3;9003:1;8999:6;;;;;;;;;;;;;8989:9;:17::i;:::-;8980:26;;9025:22;9032:6;9040:3;9044:1;9040:6;;;;;;;;;;;;;9025;:22::i;:::-;9016:3;9020:1;9016:6;;;;;;;;;;;;:31;;;;9066:22;9073:6;9081:3;9085:1;9081:6;;;;;;;;;;;;;9066;:22::i;:::-;9057:3;9061:1;9057:6;;;;;;;;;;;;:31;;;;9107:22;9114:6;9122:3;9126:1;9122:6;;;;;;;;;;;;;9107;:22::i;:::-;9098:3;9102:1;9098:6;;;;;;;;;;;;:31;;;;9167:47;;;;;;;;;9200:1;9179:23;;;;;;;9192:3;9196:1;9192:6;;;;;;;;;;;;;9186:4;9179:23;9167:47;;;;9204:3;9208:1;9204:6;;;;;;;;;;;;;9167:47;;;;9212:1;9167:47;;;:2;9170:1;9167:5;;;;;;;;;;;;;9173:1;9167:8;;;;;;;;;;;;:47;;;;9231:61;;;;;;;;;9267:1;9243:26;;;;;;;9256:3;9260:1;9256:6;;;;;;;;;;;;;9263:1;9256:9;;;;;;;;;;;;;9250:4;9243:26;9231:61;;;;9271:3;9275:1;9271:6;;;;;;;;;;;;;9278:1;9271:9;;;;;;;;;;;;;9231:61;;;;9282:3;9286:1;9282:6;;;;;;;;;;;;;9289:1;9282:9;;;;;;;;;;;;;9231:61;;;:2;9234:1;9231:5;;;;;;;;;;;;;9237:1;9231:8;;;;;;;;;;;;:61;;;;9302;;;;;;;;;9338:1;9314:26;;;;;;;9327:3;9331:1;9327:6;;;;;;;;;;;;;9334:1;9327:9;;;;;;;;;;;;;9321:4;9314:26;9302:61;;;;9342:3;9346:1;9342:6;;;;;;;;;;;;;9349:1;9342:9;;;;;;;;;;;;;9302:61;;;;9353:3;9357:1;9353:6;;;;;;;;;;;;;9360:1;9353:9;;;;;;;;;;;;;9302:61;;;:2;9305:1;9302:5;;;;;;;;;;;;;9308:1;9302:8;;;;;;;;;;;;:61;;;;9373;;;;;;;;;9409:1;9385:26;;;;;;;9398:3;9402:1;9398:6;;;;;;;;;;;;;9405:1;9398:9;;;;;;;;;;;;;9392:4;9385:26;9373:61;;;;9413:3;9417:1;9413:6;;;;;;;;;;;;;9420:1;9413:9;;;;;;;;;;;;;9373:61;;;;9424:3;9428:1;9424:6;;;;;;;;;;;;;9431:1;9424:9;;;;;;;;;;;;;9373:61;;;:2;9376:1;9373:5;;;;;;;;;;;;;9379:1;9373:8;;;;;;;;;;;;:61;;;;7997:1444;;;;;;:::o;7275:712::-;7344:9;7410;7443;7469:11;7511:12;7555:9;7595;7646;7356:1;7358;7356:4;;;;;;;;;;;;;7344:16;;7379:1;7374;:6;7370:31;;;7394:7;;7370:31;219:66;7410:23;;7455:1;7457;7455:4;;;;;;;;;;;;;7443:16;;7499:1;7483:18;;;;;;;7493:1;7495;7493:4;;;;;;;;;;;;;7490:1;7483:18;7469:32;;7543:1;7526:19;;;;;;;7538:3;7533;7526:19;7511:34;;7583:1;7567:18;;;;;;;7580:1;7574:4;7567:18;7555:30;;7634:1;7607:29;;;;;;;7630:1;7617:15;;;;;;;7627:1;7624;7617:15;7614:1;7607:29;7595:41;;7763:1;7658:107;;;;;;;7760:1;7682:80;;;;;;;7757:1;7689:66;7682:80;7678:1;7665:15;;;;;;;7675:1;7672;7665:15;7658:107;7646:119;;7782:1;7775;7777;7775:4;;;;;;;;;;;;:8;;;;;7944:1;7800:146;;;;;;;7940:1;7842:100;;;;;;;7936:1;7917:21;;;;;;;7930:4;7924;7917:21;7849:66;7842:100;7838:1;7807:33;;;;;;;7834:1;7817:19;;;;;;;7831:1;7827;:5;7824:1;7817:19;7814:1;7807:33;7800:146;7793:1;7795;7793:4;;;;;;;;;;;;:153;;;;;7978:1;7963:17;;;;;;;7975:1;7970:3;7963:17;7956:1;7958;7956:4;;;;;;;;;;;;:24;;;;;7275:712;;;;;;;;;;:::o;4913:1270::-;5001:10;5028;5055:9;5266:10;5306;5349;5444:9;5487;5694;5748;5926:12;5014:1;5016;5014:4;;;;;;;;;;;;;5001:17;;5041:1;5043;5041:4;;;;;;;;;;;;;5028:17;;219:66;5055:23;;5098:1;5092:2;:7;5089:167;;;5121:1;5123;5121:4;;;;;;;;;;;;;5114:1;5116;5114:4;;;;;;;;;;;;:11;;;;;5150:1;5152;5150:4;;;;;;;;;;;;;5146:1;:8;5139:1;5141;5139:4;;;;;;;;;;;;:15;;;;;5175:2;5168:1;5170;5168:4;;;;;;;;;;;;:9;;;;;5191:7;;5089:167;5223:1;5217:2;:7;5214:42;;;5239:7;;5214:42;5294:1;5279:17;;;;;;;5290:2;5286;5279:17;5266:30;;5337:1;5320:19;;;;;;;5333:2;5327:1;5329;5327:4;;;;;;;;;;;;;5320:19;5306:33;;5399:1;5363:38;;;;;;;5395:1;5380:17;;;;;;;5391:2;5387;5380:17;5374:1;5376;5374:4;;;;;;;;;;;;;5370:1;:8;5363:38;5349:52;;5432:1;5417:17;;;;;;;5428:2;5424;5417:17;5412:22;;5475:1;5458:19;;;;;;;5471:2;5465:1;5467;5465:4;;;;;;;;;;;;;5458:19;5444:33;;5533:1;5501:34;;;;;;;5529:1;5514:17;;;;;;;5525:2;5521;5514:17;5508:1;5510;5508:4;;;;;;;;;;;;;5501:34;5487:48;;5557:2;5552:1;:7;5551:22;;;;;5570:2;5565:1;:7;5551:22;5547:80;;;5595:1;5588;5590;5588:4;;;;;;;;;;;;:8;;;;;5610:7;;5547:80;5668:1;5652:18;;;;;;;5665:1;5663;:3;5659:2;5652:18;5645:25;;5722:1;5706:18;;;;;;;5719:1;5717;:3;5713:2;5706:18;5694:30;;5773:1;5760:15;;;;;;;5770:1;5767;5760:15;5748:27;;5814:1;5801:15;;;;;;;5811:1;5808;5801:15;5796:20;;5868:1;5855:15;;;;;;;5865:1;5862;5855:15;5851:19;;6001:1;5941:62;;;;;;;5997:1;5969:30;;;;;;;5994:1;5990;5976:16;;;;;;;5986:2;5983:1;5976:16;5969:30;5967:1;:32;5963:1;5948:17;;;;;;;5959:2;5955;5948:17;5941:62;5926:77;;6020:4;6013:1;6015;6013:4;;;;;;;;;;;;:11;;;;;6075:1;6041:36;;;;;;;6071:1;6052:21;;;;;;;6065:4;6063:1;:6;6059:2;6052:21;6048:2;6041:36;6034:43;;6126:1;6094:34;;;;;;;6122:1;6109:15;;;;;;;6119:1;6116;6109:15;6107:1;:17;6101:4;6094:34;6087:1;6089;6087:4;;;;;;;;;;;;:41;;;;;6174:1;6145:31;;;;;;;6170:1;6155:17;;;;;;;6166:2;6162;6155:17;6152:1;6145:31;6138:1;6140;6138:4;;;;;;;;;;;;:38;;;;;4913:1270;;;;;;;;;;;;;;:::o;3246:1282::-;3334:10;3361;3562:9;3596:10;3636;3679;3770:9;3813;4039;4093;4271:12;3347:1;3349;3347:4;;;;;;;;;;;;;3334:17;;3374:1;3376;3374:4;;;;;;;;;;;;;3361:17;;3398:1;3392:2;:7;3389:163;;;3421:1;3423;3421:4;;;;;;;;;;;;;3414:1;3416;3414:4;;;;;;;;;;;;:11;;;;;3446:1;3448;3446:4;;;;;;;;;;;;;3439:1;3441;3439:4;;;;;;;;;;;;:11;;;;;3471:2;3464:1;3466;3464:4;;;;;;;;;;;;:9;;;;;3487:7;;3389:163;3519:1;3513:2;:7;3510:42;;;3535:7;;3510:42;219:66;3562:23;;3624:1;3609:17;;;;;;;3620:2;3616;3609:17;3596:30;;3667:1;3650:19;;;;;;;3663:2;3657:1;3659;3657:4;;;;;;;;;;;;;3650:19;3636:33;;3725:1;3693:34;;;;;;;3721:1;3706:17;;;;;;;3717:2;3713;3706:17;3700:1;3702;3700:4;;;;;;;;;;;;;3693:34;3679:48;;3758:1;3743:17;;;;;;;3754:2;3750;3743:17;3738:22;;3801:1;3784:19;;;;;;;3797:2;3791:1;3793;3791:4;;;;;;;;;;;;;3784:19;3770:33;;3859:1;3827:34;;;;;;;3855:1;3840:17;;;;;;;3851:2;3847;3840:17;3834:1;3836;3834:4;;;;;;;;;;;;;3827:34;3813:48;;3894:2;3889:1;:7;3888:22;;;;;3907:2;3902:1;:7;3888:22;3884:88;;;3925:16;3939:1;3925:13;:16::i;:::-;3955:7;;3884:88;4013:1;3997:18;;;;;;;4010:1;4008;:3;4004:2;3997:18;3990:25;;4067:1;4051:18;;;;;;;4064:1;4062;:3;4058:2;4051:18;4039:30;;4118:1;4105:15;;;;;;;4115:1;4112;4105:15;4093:27;;4159:1;4146:15;;;;;;;4156:1;4153;4146:15;4141:20;;4213:1;4200:15;;;;;;;4210:1;4207;4200:15;4196:19;;4346:1;4286:62;;;;;;;4342:1;4314:30;;;;;;;4339:1;4335;4321:16;;;;;;;4331:2;4328:1;4321:16;4314:30;4312:1;:32;4308:1;4293:17;;;;;;;4304:2;4300;4293:17;4286:62;4271:77;;4365:4;4358:1;4360;4358:4;;;;;;;;;;;;:11;;;;;4420:1;4386:36;;;;;;;4416:1;4397:21;;;;;;;4410:4;4408:1;:6;4404:2;4397:21;4393:2;4386:36;4379:43;;4471:1;4439:34;;;;;;;4467:1;4454:15;;;;;;;4464:1;4461;4454:15;4452:1;:17;4446:4;4439:34;4432:1;4434;4432:4;;;;;;;;;;;;:41;;;;;4519:1;4490:31;;;;;;;4515:1;4500:17;;;;;;;4511:2;4507;4500:17;4497:1;4490:31;4483:1;4485;4483:4;;;;;;;;;;;;:38;;;;;3246:1282;;;;;;;;;;;;;;:::o;6354:735::-;6418:16;;:::i;:::-;6446:9;6512;6545;6571:11;6613:12;6657:9;6697;6748;6458:1;6460;6458:4;;;;;;;;;;;;;6446:16;;6481:1;6476;:6;6472:31;;;6496:7;;6472:31;219:66;6512:23;;6557:1;6559;6557:4;;;;;;;;;;;;;6545:16;;6601:1;6585:18;;;;;;;6595:1;6597;6595:4;;;;;;;;;;;;;6592:1;6585:18;6571:32;;6645:1;6628:19;;;;;;;6640:3;6635;6628:19;6613:34;;6685:1;6669:18;;;;;;;6682:1;6676:4;6669:18;6657:30;;6736:1;6709:29;;;;;;;6732:1;6719:15;;;;;;;6729:1;6726;6719:15;6716:1;6709:29;6697:41;;6865:1;6760:107;;;;;;;6862:1;6784:80;;;;;;;6859:1;6791:66;6784:80;6780:1;6767:15;;;;;;;6777:1;6774;6767:15;6760:107;6748:119;;6884:1;6877;6879;6877:4;;;;;;;;;;;;:8;;;;;7046:1;6902:146;;;;;;;7042:1;6944:100;;;;;;;7038:1;7019:21;;;;;;;7032:4;7026;7019:21;6951:66;6944:100;6940:1;6909:33;;;;;;;6936:1;6919:19;;;;;;;6933:1;6929;:5;6926:1;6919:19;6916:1;6909:33;6902:146;6895:1;6897;6895:4;;;;;;;;;;;;:153;;;;;7080:1;7065:17;;;;;;;7077:1;7072:3;7065:17;7058:1;7060;7058:4;;;;;;;;;;;;:24;;;;;6354:735;;;;;;;;;;;;:::o;1743:1121::-;1822:16;;:::i;:::-;1959:9;1992:11;2037;2082:9;2126;2190:10;2234;2376:9;2432:19;;:::i;:::-;2609:9;1862:1;1854;1856;1854:4;;;;;;;;;;;;;:9;1851:98;;;1885:1;1878:8;;;;1851:98;1914:1;1906;1908;1906:4;;;;;;;;;;;;;:9;1903:46;;;1937:1;1930:8;;;;1903:46;219:66;1959:23;;2025:1;2006:21;;;;;;;2019:1;2021;2019:4;;;;;;;;;;;;;2013:1;2015;2013:4;;;;;;;;;;;;;2006:21;1992:35;;2070:1;2051:21;;;;;;;2064:1;2066;2064:4;;;;;;;;;;;;;2058:1;2060;2058:4;;;;;;;;;;;;;2051:21;2037:35;;2114:1;2096:20;;;;;;;2109:3;2103:1;2105;2103:4;;;;;;;;;;;;;2096:20;2082:34;;2175:1;2140:37;;;;;;;2171:1;2153:20;;;;;;;2166:3;2160:1;2162;2160:4;;;;;;;;;;;;;2153:20;2147:1;2149;2147:4;;;;;;;;;;;;;2140:37;2126:51;;2222:1;2204:20;;;;;;;2217:3;2211:1;2213;2211:4;;;;;;;;;;;;;2204:20;2190:34;;2283:1;2248:37;;;;;;;2279:1;2261:20;;;;;;;2274:3;2268:1;2270;2268:4;;;;;;;;;;;;;2261:20;2255:1;2257;2255:4;;;;;;;;;;;;;2248:37;2234:51;;2306:2;2301:1;:7;2300:22;;;;;2319:2;2314:1;:7;2300:22;2296:71;;;2344:12;2354:1;2344:9;:12::i;:::-;2337:19;;;;2296:71;2406:1;2390:18;;;;;;;2403:1;2401;:3;2397:2;2390:18;2376:32;;2484:1;2468:18;;;;;;;2481:1;2479;:3;2475:2;2468:18;2461:1;2463;2461:4;;;;;;;;;;;;:25;;;;;2536:1;2517:21;;;;;;;2530:1;2532;2530:4;;;;;;;;;;;;;2524:1;2526;2524:4;;;;;;;;;;;;;2517:21;2510:1;2512;2510:4;;;;;;;;;;;;:28;;;;;2585:1;2566:21;;;;;;;2579:1;2581;2579:4;;;;;;;;;;;;;2573:1;2575;2573:4;;;;;;;;;;;;;2566:21;2559:1;2561;2559:4;;;;;;;;;;;;:28;;;;;2637:1;2621:18;;;;;;;2631:1;2633;2631:4;;;;;;;;;;;;;2628:1;2621:18;2609:30;;2716:1;2656:62;;;;;;;2712:1;2682:32;;;;;;;2706:1;2708;2706:4;;;;;;;;;;;;;2702:1;2689:15;;;;;;;2699:1;2696;2689:15;2682:32;2680:1;:34;2676:1;2663:15;;;;;;;2673:1;2670;2663:15;2656:62;2649:1;2651;2649:4;;;;;;;;;;;;:69;;;;;2800:1;2735:67;;;;;;;2796:1;2780:18;;;;;;;2790:1;2792;2790:4;;;;;;;;;;;;;2787:1;2780:18;2778:1;:20;2774:1;2742:34;;;;;;;2770:1;2752:20;;;;;;;2764:1;2766;2764:4;;;;;;;;;;;;;2762:1;:6;2759:1;2752:20;2749:1;2742:34;2735:67;2728:1;2730;2728:4;;;;;;;;;;;;:74;;;;;2855:1;2819:38;;;;;;;2851:1;2832:21;;;;;;;2845:1;2847;2845:4;;;;;;;;;;;;;2839:1;2841;2839:4;;;;;;;;;;;;;2832:21;2826:1;2828;2826:4;;;;;;;;;;;;;2819:38;2812:1;2814;2812:4;;;;;;;;;;;;:45;;;;;1743:1121;;;;;;;;;;;;;;;:::o;54:1525:1:-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;54:1525:1;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;54:1525:1;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;54:1525:1;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;54:1525:1;;;;:::o", - "source": "pragma solidity ^0.4.24;\n\nimport \"./Numerology.sol\";\n\ncontract Verifier {\n\n function test_proof_verification() public view returns (bool) {\n // Verifier.deployed().then(function(inst) { return inst.test_proof_verification.estimateGas(); })\n\n int256[4] memory k_l = [int256(-89243190524605339210527649141408088119), \n int256(-53877858828609620138203152946894934485),\n int256(-185204247857117235934281322466442848518), \n int256(-7585701889390054782280085152653861472)];\n\n uint256[4] memory P_Q = [0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,\n 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8,\n 0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,\n 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a];\n\n uint256[4] memory wnaf;\n uint256 max_count = 0;\n uint256 count = 0; \n\n for(uint j=0; j<4; j++){\n (wnaf[j], count) = Numerology._wnaf(k_l[j]);\n if(count > max_count){\n max_count = count;\n }\n }\n \n uint256[3] memory kP_lQ = Numerology._sim_mul_wnaf(wnaf, max_count, P_Q);\n\n uint256[3] memory expected = [0x7635e27fba8e1f779dcfdde1b1eacbe0571fbe39ecf6056d29ba4bd3ef5e22f2,\n 0x197888e5cec769ac2f1eb65dbcbc0e49c00a8cdf01f8030d8286b68c1933fb18, \n 1];\n\n return Numerology.eq_jacobian(kP_lQ, expected);\n\n }\n\n}\n\n", - "sourcePath": "/Users/david/NuCypher/dev/numerology/contracts/verifier.sol", - "ast": { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/verifier.sol", - "exportedSymbols": { - "Verifier": [ - 2079 - ] - }, - "id": 2080, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1961, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:1" - }, - { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/Numerology.sol", - "file": "./Numerology.sol", - "id": 1962, - "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 1960, - "src": "26:26:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 2079, - "linearizedBaseContracts": [ - 2079 - ], - "name": "Verifier", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2077, - "nodeType": "Block", - "src": "139:1437:1", - "statements": [ - { - "assignments": [ - 1971 - ], - "declarations": [ - { - "constant": false, - "id": 1971, - "name": "k_l", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "249:20:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4]" - }, - "typeName": { - "baseType": { - "id": 1969, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "249:6:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1970, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1968, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "256:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "249:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_storage_ptr", - "typeString": "int256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1989, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1974, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "280:39:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "3839323433313930353234363035333339323130353237363439313431343038303838313139", - "id": 1973, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "281:38:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_89243190524605339210527649141408088119_by_1", - "typeString": "int_const 8924...(30 digits omitted)...8119" - }, - "value": "89243190524605339210527649141408088119" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-89243190524605339210527649141408088119_by_1", - "typeString": "int_const -892...(31 digits omitted)...8119" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-89243190524605339210527649141408088119_by_1", - "typeString": "int_const -892...(31 digits omitted)...8119" - } - ], - "id": 1972, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "273:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1975, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "273:47:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1978, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "358:39:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "3533383737383538383238363039363230313338323033313532393436383934393334343835", - "id": 1977, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "359:38:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_53877858828609620138203152946894934485_by_1", - "typeString": "int_const 5387...(30 digits omitted)...4485" - }, - "value": "53877858828609620138203152946894934485" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-53877858828609620138203152946894934485_by_1", - "typeString": "int_const -538...(31 digits omitted)...4485" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-53877858828609620138203152946894934485_by_1", - "typeString": "int_const -538...(31 digits omitted)...4485" - } - ], - "id": 1976, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "351:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1979, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "351:47:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1982, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "435:40:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "313835323034323437383537313137323335393334323831333232343636343432383438353138", - "id": 1981, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "436:39:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_185204247857117235934281322466442848518_by_1", - "typeString": "int_const 1852...(31 digits omitted)...8518" - }, - "value": "185204247857117235934281322466442848518" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-185204247857117235934281322466442848518_by_1", - "typeString": "int_const -185...(32 digits omitted)...8518" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-185204247857117235934281322466442848518_by_1", - "typeString": "int_const -185...(32 digits omitted)...8518" - } - ], - "id": 1980, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "428:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1983, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "428:48:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1986, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "514:38:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "37353835373031383839333930303534373832323830303835313532363533383631343732", - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "515:37:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_7585701889390054782280085152653861472_by_1", - "typeString": "int_const 7585...(29 digits omitted)...1472" - }, - "value": "7585701889390054782280085152653861472" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-7585701889390054782280085152653861472_by_1", - "typeString": "int_const -758...(30 digits omitted)...1472" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-7585701889390054782280085152653861472_by_1", - "typeString": "int_const -758...(30 digits omitted)...1472" - } - ], - "id": 1984, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "507:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1987, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "507:46:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 1988, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "272:282:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "249:305:1" - }, - { - "assignments": [ - 1994 - ], - "declarations": [ - { - "constant": false, - "id": 1994, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "561:21:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1992, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "561:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1993, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "569:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "561:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2000, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "307837396265363637656639646362626163353561303632393563653837306230373032396266636462326463653238643935396632383135623136663831373938", - "id": 1995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "586:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_55066263022277343669578718895168534326250603453777594175500187360389116729240_by_1", - "typeString": "int_const 5506...(69 digits omitted)...9240" - }, - "value": "0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" - }, - { - "argumentTypes": null, - "hexValue": "307834383361646137373236613363343635356461346662666330653131303861386664313762343438613638353534313939633437643038666662313064346238", - "id": 1996, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "683:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32670510020758816978083085130507043184471273380659243275938904335757337482424_by_1", - "typeString": "int_const 3267...(69 digits omitted)...2424" - }, - "value": "0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8" - }, - { - "argumentTypes": null, - "hexValue": "307863363034376639343431656437643664333034353430366539356330376364383563373738653462386365663363613761626163303962393563373039656535", - "id": 1997, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_89565891926547004231252920425935692360644145829622209833684329913297188986597_by_1", - "typeString": "int_const 8956...(69 digits omitted)...6597" - }, - "value": "0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5" - }, - { - "argumentTypes": null, - "hexValue": "307831616531363866656136336463333339613363353834313934363663656165656637663633323635333236366430653132333634333161393530636665353261", - "id": 1998, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "877:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_12158399299693830322967808612713398636155367887041628176798871954788371653930_by_1", - "typeString": "int_const 1215...(69 digits omitted)...3930" - }, - "value": "0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a" - } - ], - "id": 1999, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "585:359:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "561:383:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 2005, - "name": "wnaf", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "951:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 2003, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "951:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2004, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 2002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "959:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "951:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2006, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "951:22:1" - }, - { - "assignments": [ - 2008 - ], - "declarations": [ - { - "constant": false, - "id": 2008, - "name": "max_count", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "979:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2007, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "979:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2010, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2009, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "999:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "979:21:1" - }, - { - "assignments": [ - 2012 - ], - "declarations": [ - { - "constant": false, - "id": 2012, - "name": "count", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1006:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2011, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1006:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2014, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2013, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1006:17:1" - }, - { - "body": { - "id": 2047, - "nodeType": "Block", - "src": "1061:130:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 2036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2025, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "1072:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 2027, - "indexExpression": { - "argumentTypes": null, - "id": 2026, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1077:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1072:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2028, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2012, - "src": "1081:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2029, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "1071:16:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2032, - "name": "k_l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1971, - "src": "1107:3:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4] memory" - } - }, - "id": 2034, - "indexExpression": { - "argumentTypes": null, - "id": 2033, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1111:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1107:6:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "expression": { - "argumentTypes": null, - "id": 2030, - "name": "Numerology", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "1090:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Numerology_$1959_$", - "typeString": "type(library Numerology)" - } - }, - "id": 2031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "_wnaf", - "nodeType": "MemberAccess", - "referencedDeclaration": 1571, - "src": "1090:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_int256_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (int256) view returns (uint256,uint256)" - } - }, - "id": 2035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1090:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "src": "1071:43:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2037, - "nodeType": "ExpressionStatement", - "src": "1071:43:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2038, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2012, - "src": "1127:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 2039, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "1135:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1127:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 2046, - "nodeType": "IfStatement", - "src": "1124:61:1", - "trueBody": { - "id": 2045, - "nodeType": "Block", - "src": "1145:40:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 2043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 2041, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "1157:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 2042, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2012, - "src": "1169:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1157:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2044, - "nodeType": "ExpressionStatement", - "src": "1157:17:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2021, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2019, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1052:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 2020, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1054:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "1052:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2048, - "initializationExpression": { - "assignments": [ - 2016 - ], - "declarations": [ - { - "constant": false, - "id": 2016, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1042:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2015, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1042:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2018, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2017, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1049:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1042:8:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2023, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1057:3:1", - "subExpression": { - "argumentTypes": null, - "id": 2022, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1057:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2024, - "nodeType": "ExpressionStatement", - "src": "1057:3:1" - }, - "nodeType": "ForStatement", - "src": "1038:153:1" - }, - { - "assignments": [ - 2053 - ], - "declarations": [ - { - "constant": false, - "id": 2053, - "name": "kP_lQ", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1201:23:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 2051, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1201:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2052, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 2050, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1209:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1201:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2060, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2056, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "1252:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - { - "argumentTypes": null, - "id": 2057, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "1258:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2058, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1994, - "src": "1269:3:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 2054, - "name": "Numerology", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "1227:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Numerology_$1959_$", - "typeString": "type(library Numerology)" - } - }, - "id": 2055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "_sim_mul_wnaf", - "nodeType": "MemberAccess", - "referencedDeclaration": 1906, - "src": "1227:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$4_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$4_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[4] memory,uint256,uint256[4] memory) view returns (uint256[3] memory)" - } - }, - "id": 2059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1227:46:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1201:72:1" - }, - { - "assignments": [ - 2065 - ], - "declarations": [ - { - "constant": false, - "id": 2065, - "name": "expected", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1280:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 2063, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1280:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2064, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 2062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1288:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1280:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2070, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "307837363335653237666261386531663737396463666464653162316561636265303537316662653339656366363035366432396261346264336566356532326632", - "id": 2066, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1310:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_53468122265492841821127936403025349901991343486567769952160582370032262980338_by_1", - "typeString": "int_const 5346...(69 digits omitted)...0338" - }, - "value": "0x7635e27fba8e1f779dcfdde1b1eacbe0571fbe39ecf6056d29ba4bd3ef5e22f2" - }, - { - "argumentTypes": null, - "hexValue": "307831393738383865356365633736396163326631656236356462636263306534396330306138636466303166383033306438323836623638633139333366623138", - "id": 2067, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1412:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_11520787695462381867815738258395594837573689657525371309976932268315048672024_by_1", - "typeString": "int_const 1152...(69 digits omitted)...2024" - }, - "value": "0x197888e5cec769ac2f1eb65dbcbc0e49c00a8cdf01f8030d8286b68c1933fb18" - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 2068, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1515:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 2069, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1309:208:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1280:237:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2073, - "name": "kP_lQ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1554:5:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "id": 2074, - "name": "expected", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2065, - "src": "1561:8:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 2071, - "name": "Numerology", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "1531:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Numerology_$1959_$", - "typeString": "type(library Numerology)" - } - }, - "id": 2072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "eq_jacobian", - "nodeType": "MemberAccess", - "referencedDeclaration": 123, - "src": "1531:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_pure$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_bool_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) pure returns (bool)" - } - }, - "id": 2075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1531:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1966, - "id": 2076, - "nodeType": "Return", - "src": "1524:46:1" - } - ] - }, - "documentation": null, - "id": 2078, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "test_proof_verification", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1963, - "nodeType": "ParameterList", - "parameters": [], - "src": "109:2:1" - }, - "payable": false, - "returnParameters": { - "id": 1966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1965, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "133:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1964, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "133:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "132:6:1" - }, - "scope": 2079, - "src": "77:1499:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 2080, - "src": "54:1525:1" - } - ], - "src": "0:1581:1" - }, - "legacyAST": { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/verifier.sol", - "exportedSymbols": { - "Verifier": [ - 2079 - ] - }, - "id": 2080, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1961, - "literals": [ - "solidity", - "^", - "0.4", - ".24" - ], - "nodeType": "PragmaDirective", - "src": "0:24:1" - }, - { - "absolutePath": "/Users/david/NuCypher/dev/numerology/contracts/Numerology.sol", - "file": "./Numerology.sol", - "id": 1962, - "nodeType": "ImportDirective", - "scope": 2080, - "sourceUnit": 1960, - "src": "26:26:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 2079, - "linearizedBaseContracts": [ - 2079 - ], - "name": "Verifier", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2077, - "nodeType": "Block", - "src": "139:1437:1", - "statements": [ - { - "assignments": [ - 1971 - ], - "declarations": [ - { - "constant": false, - "id": 1971, - "name": "k_l", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "249:20:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4]" - }, - "typeName": { - "baseType": { - "id": 1969, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "249:6:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1970, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1968, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "256:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "249:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_storage_ptr", - "typeString": "int256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1989, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1974, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "280:39:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "3839323433313930353234363035333339323130353237363439313431343038303838313139", - "id": 1973, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "281:38:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_89243190524605339210527649141408088119_by_1", - "typeString": "int_const 8924...(30 digits omitted)...8119" - }, - "value": "89243190524605339210527649141408088119" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-89243190524605339210527649141408088119_by_1", - "typeString": "int_const -892...(31 digits omitted)...8119" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-89243190524605339210527649141408088119_by_1", - "typeString": "int_const -892...(31 digits omitted)...8119" - } - ], - "id": 1972, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "273:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1975, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "273:47:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1978, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "358:39:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "3533383737383538383238363039363230313338323033313532393436383934393334343835", - "id": 1977, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "359:38:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_53877858828609620138203152946894934485_by_1", - "typeString": "int_const 5387...(30 digits omitted)...4485" - }, - "value": "53877858828609620138203152946894934485" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-53877858828609620138203152946894934485_by_1", - "typeString": "int_const -538...(31 digits omitted)...4485" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-53877858828609620138203152946894934485_by_1", - "typeString": "int_const -538...(31 digits omitted)...4485" - } - ], - "id": 1976, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "351:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1979, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "351:47:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1982, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "435:40:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "313835323034323437383537313137323335393334323831333232343636343432383438353138", - "id": 1981, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "436:39:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_185204247857117235934281322466442848518_by_1", - "typeString": "int_const 1852...(31 digits omitted)...8518" - }, - "value": "185204247857117235934281322466442848518" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-185204247857117235934281322466442848518_by_1", - "typeString": "int_const -185...(32 digits omitted)...8518" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-185204247857117235934281322466442848518_by_1", - "typeString": "int_const -185...(32 digits omitted)...8518" - } - ], - "id": 1980, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "428:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1983, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "428:48:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1986, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "514:38:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "37353835373031383839333930303534373832323830303835313532363533383631343732", - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "515:37:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_7585701889390054782280085152653861472_by_1", - "typeString": "int_const 7585...(29 digits omitted)...1472" - }, - "value": "7585701889390054782280085152653861472" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_-7585701889390054782280085152653861472_by_1", - "typeString": "int_const -758...(30 digits omitted)...1472" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_-7585701889390054782280085152653861472_by_1", - "typeString": "int_const -758...(30 digits omitted)...1472" - } - ], - "id": 1984, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "507:6:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": "int256" - }, - "id": 1987, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "507:46:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 1988, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "272:282:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "249:305:1" - }, - { - "assignments": [ - 1994 - ], - "declarations": [ - { - "constant": false, - "id": 1994, - "name": "P_Q", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "561:21:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 1992, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "561:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1993, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 1991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "569:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "561:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2000, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "307837396265363637656639646362626163353561303632393563653837306230373032396266636462326463653238643935396632383135623136663831373938", - "id": 1995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "586:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_55066263022277343669578718895168534326250603453777594175500187360389116729240_by_1", - "typeString": "int_const 5506...(69 digits omitted)...9240" - }, - "value": "0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" - }, - { - "argumentTypes": null, - "hexValue": "307834383361646137373236613363343635356461346662666330653131303861386664313762343438613638353534313939633437643038666662313064346238", - "id": 1996, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "683:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32670510020758816978083085130507043184471273380659243275938904335757337482424_by_1", - "typeString": "int_const 3267...(69 digits omitted)...2424" - }, - "value": "0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8" - }, - { - "argumentTypes": null, - "hexValue": "307863363034376639343431656437643664333034353430366539356330376364383563373738653462386365663363613761626163303962393563373039656535", - "id": 1997, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_89565891926547004231252920425935692360644145829622209833684329913297188986597_by_1", - "typeString": "int_const 8956...(69 digits omitted)...6597" - }, - "value": "0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5" - }, - { - "argumentTypes": null, - "hexValue": "307831616531363866656136336463333339613363353834313934363663656165656637663633323635333236366430653132333634333161393530636665353261", - "id": 1998, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "877:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_12158399299693830322967808612713398636155367887041628176798871954788371653930_by_1", - "typeString": "int_const 1215...(69 digits omitted)...3930" - }, - "value": "0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a" - } - ], - "id": 1999, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "585:359:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "561:383:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 2005, - "name": "wnaf", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "951:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4]" - }, - "typeName": { - "baseType": { - "id": 2003, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "951:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2004, - "length": { - "argumentTypes": null, - "hexValue": "34", - "id": 2002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "959:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "4" - }, - "nodeType": "ArrayTypeName", - "src": "951:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", - "typeString": "uint256[4]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2006, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "951:22:1" - }, - { - "assignments": [ - 2008 - ], - "declarations": [ - { - "constant": false, - "id": 2008, - "name": "max_count", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "979:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2007, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "979:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2010, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2009, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "999:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "979:21:1" - }, - { - "assignments": [ - 2012 - ], - "declarations": [ - { - "constant": false, - "id": 2012, - "name": "count", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1006:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2011, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1006:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2014, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2013, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1006:17:1" - }, - { - "body": { - "id": 2047, - "nodeType": "Block", - "src": "1061:130:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 2036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2025, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "1072:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - "id": 2027, - "indexExpression": { - "argumentTypes": null, - "id": 2026, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1077:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1072:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2028, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2012, - "src": "1081:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2029, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "1071:16:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2032, - "name": "k_l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1971, - "src": "1107:3:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int256_$4_memory_ptr", - "typeString": "int256[4] memory" - } - }, - "id": 2034, - "indexExpression": { - "argumentTypes": null, - "id": 2033, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1111:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1107:6:1", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "expression": { - "argumentTypes": null, - "id": 2030, - "name": "Numerology", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "1090:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Numerology_$1959_$", - "typeString": "type(library Numerology)" - } - }, - "id": 2031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "_wnaf", - "nodeType": "MemberAccess", - "referencedDeclaration": 1571, - "src": "1090:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_int256_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (int256) view returns (uint256,uint256)" - } - }, - "id": 2035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1090:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "src": "1071:43:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2037, - "nodeType": "ExpressionStatement", - "src": "1071:43:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2038, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2012, - "src": "1127:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 2039, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "1135:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1127:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 2046, - "nodeType": "IfStatement", - "src": "1124:61:1", - "trueBody": { - "id": 2045, - "nodeType": "Block", - "src": "1145:40:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 2043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 2041, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "1157:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 2042, - "name": "count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2012, - "src": "1169:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1157:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2044, - "nodeType": "ExpressionStatement", - "src": "1157:17:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2021, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2019, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1052:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "34", - "id": 2020, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1054:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "1052:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2048, - "initializationExpression": { - "assignments": [ - 2016 - ], - "declarations": [ - { - "constant": false, - "id": 2016, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1042:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2015, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1042:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2018, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2017, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1049:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1042:8:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2023, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1057:3:1", - "subExpression": { - "argumentTypes": null, - "id": 2022, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "1057:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2024, - "nodeType": "ExpressionStatement", - "src": "1057:3:1" - }, - "nodeType": "ForStatement", - "src": "1038:153:1" - }, - { - "assignments": [ - 2053 - ], - "declarations": [ - { - "constant": false, - "id": 2053, - "name": "kP_lQ", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1201:23:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 2051, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1201:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2052, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 2050, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1209:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1201:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2060, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2056, - "name": "wnaf", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "1252:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - }, - { - "argumentTypes": null, - "id": 2057, - "name": "max_count", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "1258:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2058, - "name": "P_Q", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1994, - "src": "1269:3:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", - "typeString": "uint256[4] memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 2054, - "name": "Numerology", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "1227:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Numerology_$1959_$", - "typeString": "type(library Numerology)" - } - }, - "id": 2055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "_sim_mul_wnaf", - "nodeType": "MemberAccess", - "referencedDeclaration": 1906, - "src": "1227:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$4_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$4_memory_ptr_$returns$_t_array$_t_uint256_$3_memory_ptr_$", - "typeString": "function (uint256[4] memory,uint256,uint256[4] memory) view returns (uint256[3] memory)" - } - }, - "id": 2059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1227:46:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1201:72:1" - }, - { - "assignments": [ - 2065 - ], - "declarations": [ - { - "constant": false, - "id": 2065, - "name": "expected", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "1280:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3]" - }, - "typeName": { - "baseType": { - "id": 2063, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1280:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2064, - "length": { - "argumentTypes": null, - "hexValue": "33", - "id": 2062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1288:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - }, - "value": "3" - }, - "nodeType": "ArrayTypeName", - "src": "1280:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr", - "typeString": "uint256[3]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2070, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "307837363335653237666261386531663737396463666464653162316561636265303537316662653339656366363035366432396261346264336566356532326632", - "id": 2066, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1310:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_53468122265492841821127936403025349901991343486567769952160582370032262980338_by_1", - "typeString": "int_const 5346...(69 digits omitted)...0338" - }, - "value": "0x7635e27fba8e1f779dcfdde1b1eacbe0571fbe39ecf6056d29ba4bd3ef5e22f2" - }, - { - "argumentTypes": null, - "hexValue": "307831393738383865356365633736396163326631656236356462636263306534396330306138636466303166383033306438323836623638633139333366623138", - "id": 2067, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1412:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_11520787695462381867815738258395594837573689657525371309976932268315048672024_by_1", - "typeString": "int_const 1152...(69 digits omitted)...2024" - }, - "value": "0x197888e5cec769ac2f1eb65dbcbc0e49c00a8cdf01f8030d8286b68c1933fb18" - }, - { - "argumentTypes": null, - "hexValue": "31", - "id": 2068, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1515:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 2069, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1309:208:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1280:237:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2073, - "name": "kP_lQ", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1554:5:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - }, - { - "argumentTypes": null, - "id": 2074, - "name": "expected", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2065, - "src": "1561:8:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr", - "typeString": "uint256[3] memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 2071, - "name": "Numerology", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "1531:10:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Numerology_$1959_$", - "typeString": "type(library Numerology)" - } - }, - "id": 2072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "eq_jacobian", - "nodeType": "MemberAccess", - "referencedDeclaration": 123, - "src": "1531:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_pure$_t_array$_t_uint256_$3_memory_ptr_$_t_array$_t_uint256_$3_memory_ptr_$returns$_t_bool_$", - "typeString": "function (uint256[3] memory,uint256[3] memory) pure returns (bool)" - } - }, - "id": 2075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1531:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1966, - "id": 2076, - "nodeType": "Return", - "src": "1524:46:1" - } - ] - }, - "documentation": null, - "id": 2078, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "test_proof_verification", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1963, - "nodeType": "ParameterList", - "parameters": [], - "src": "109:2:1" - }, - "payable": false, - "returnParameters": { - "id": 1966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1965, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 2078, - "src": "133:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1964, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "133:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "132:6:1" - }, - "scope": 2079, - "src": "77:1499:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 2080, - "src": "54:1525:1" - } - ], - "src": "0:1581:1" - }, - "compiler": { - "name": "solc", - "version": "0.4.24+commit.e67f0147.Emscripten.clang" - }, - "networks": { - "4447": { - "events": {}, - "links": { - "Numerology": "0xace937991395b2051613368206066eb2e752a333" - }, - "address": "0x7bf7ae2da6013aa8de29627e29e4b9fa807d4469", - "transactionHash": "0xa4e9e2ed08970e0e44a44b208c93af337cd6defd9cb1aaa62095b033ff39876c" - } - }, - "schemaVersion": "2.0.1", - "updatedAt": "2018-09-10T19:54:35.101Z" -} \ No newline at end of file diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol deleted file mode 100644 index bbcc497..0000000 --- a/contracts/Migrations.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.4.24; - -contract Migrations { - address public owner; - uint public last_completed_migration; - - modifier restricted() { - if (msg.sender == owner) _; - } - - constructor() public { - owner = msg.sender; - } - - function setCompleted(uint completed) restricted { - last_completed_migration = completed; - } - - function upgrade(address new_address) restricted { - Migrations upgraded = Migrations(new_address); - upgraded.setCompleted(last_completed_migration); - } -} diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js deleted file mode 100644 index 4d5f3f9..0000000 --- a/migrations/1_initial_migration.js +++ /dev/null @@ -1,5 +0,0 @@ -var Migrations = artifacts.require("./Migrations.sol"); - -module.exports = function(deployer) { - deployer.deploy(Migrations); -}; diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js deleted file mode 100644 index d995d8c..0000000 --- a/migrations/2_deploy_contracts.js +++ /dev/null @@ -1,8 +0,0 @@ -const Numerology = artifacts.require('Numerology.sol'); -var Verifier = artifacts.require("Verifier.sol"); - -module.exports = function(deployer) { - deployer.deploy(Numerology); - deployer.link(Numerology, Verifier); - deployer.deploy(Verifier); -}; diff --git a/numerology/__init__.py b/numerology/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/contracts/Numerology.sol b/numerology/contracts/Numerology.sol similarity index 99% rename from contracts/Numerology.sol rename to numerology/contracts/Numerology.sol index a5970d4..458f18a 100644 --- a/contracts/Numerology.sol +++ b/numerology/contracts/Numerology.sol @@ -11,7 +11,7 @@ library Numerology { /// @param P An EC point in Jacobian coordinates /// @param Q An EC point in Jacobian coordinates /// @return true if P and Q represent the same point in affine coordinates; false otherwise - function eq_jacobian(uint256[3] memory P, uint256[3] memory Q) pure public returns(bool){ + function eq_jacobian(uint256[3] memory P, uint256[3] memory Q) pure internal returns(bool){ uint p = field_order; if(P[2] == 0){ @@ -354,7 +354,7 @@ library Numerology { /// @param Px The X coordinate of an EC point in affine representation /// @param Py The Y coordinate of an EC point in affine representation /// @return true if (Px, Py) is a valid secp256k1 point; false otherwise - function is_on_curve(uint256 Px, uint256 Py) public constant returns (bool) { + function is_on_curve(uint256 Px, uint256 Py) internal constant returns (bool) { uint256 p = field_order; if (Px >= p || Py >= p){ diff --git a/contracts/verifier.sol b/numerology/contracts/verifier.sol similarity index 100% rename from contracts/verifier.sol rename to numerology/contracts/verifier.sol diff --git a/scripts/install_solc.sh b/scripts/install_solc.sh new file mode 100644 index 0000000..6d7c811 --- /dev/null +++ b/scripts/install_solc.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + + +SOLC_VER="0.4.25" +SOL_BIN_PATH="$(pipenv --venv)/bin/solc" + +echo "Downloading solidity compiler binary to: ${SOL_BIN_PATH}" +wget "https://github.com/ethereum/solidity/releases/download/v${SOLC_VER}/solc-static-linux" -O ${SOL_BIN_PATH} +echo "Setting executable permission on ${SOL_BIN_PATH}" +chmod +x ${SOL_BIN_PATH} +echo "Successfully Installed solc ${SOLC_VER}" diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..a1e92f9 --- /dev/null +++ b/setup.py @@ -0,0 +1,11 @@ +from distutils.core import setup + +INSTALL_REQUIRES = [] +TESTS_REQUIRE = [] + +setup(name='numerology', + version='0.1', + description='Optimized ECC arithmetic library for secp256k1 in Solidity', + extras_require={'testing': TESTS_REQUIRE}, + install_requires=INSTALL_REQUIRES, + packages=['numerology']) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..1a0476a --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,27 @@ +import pytest + +from blockchain.chains import TesterBlockchain +from blockchain.compile import SolidityCompiler +from blockchain.constants import TEST_CONTRACTS_DIR +from blockchain.interfaces import BlockchainDeployerInterface +from blockchain.registry import InMemoryEthereumContractRegistry + + +@pytest.fixture(scope='session') +def solidity_compiler(): + """Doing this more than once per session will result in slower test run times.""" + compiler = SolidityCompiler(test_contract_dir=TEST_CONTRACTS_DIR) + yield compiler + + +@pytest.fixture(scope='module') +def testerchain(solidity_compiler): + _temp_registry = InMemoryEthereumContractRegistry() + deployer_interface = BlockchainDeployerInterface(compiler=solidity_compiler, # freshly recompile if not None + registry=_temp_registry) + testerchain = TesterBlockchain(interface=deployer_interface) + + origin, *everyone = testerchain.interface.w3.eth.accounts + deployer_interface.deployer_address = origin + + yield testerchain diff --git a/tests/contracts/Assert.sol b/tests/contracts/Assert.sol new file mode 100644 index 0000000..65c86af --- /dev/null +++ b/tests/contracts/Assert.sol @@ -0,0 +1,303 @@ +// This file taken from here: https://raw.githubusercontent.com/smartcontractproduction/sol-unit/master/contracts/src/Assertions.sol +// It was renamed to Assert.sol by Tim Coulter. + +pragma solidity ^0.4.17; + +/* + File: Assertions.slb + + Author: Andreas Olofsson (androlo1980@gmail.com) + + Library: Assertions + + Assertions for unit testing contracts. Tests are run with the + + unit-testing framework. + + (start code) + contract ModAdder { + + function addMod(uint a, uint b, uint modulus) constant returns (uint sum) { + if (modulus == 0) + throw; + return addmod(a, b, modulus); + } + + } + + contract SomeTest { + using Assertions for uint; + + function testAdd() { + var adder = new ModAdder(); + adder.addMod(50, 66, 30).equal(26, "addition returned the wrong sum"); + } + } + (end) + + It is also possible to extend , to have all bindings (using) properly set up. + + (start code) + + contract SomeTest is Test { + + function testAdd() { + var adder = new ModAdder(); + adder.addMod(50, 66, 30).equal(26, "addition returned the wrong sum"); + } + } + (end) +*/ +library Assert { + + // Constant: ADDRESS_NULL + // The null address: 0 + address constant ADDRESS_NULL = 0x0000000000000000000000000000000000000000; + // Constant: BYTES32_NULL + // The null bytes32: 0 + bytes32 constant BYTES32_NULL = 0x0; + // Constant: STRING_NULL + // The null string: "" + string constant STRING_NULL = ""; + + uint8 constant ZERO = uint8(byte('0')); + uint8 constant A = uint8(byte('a')); + + byte constant MINUS = byte('-'); + + /* + Event: TestEvent + + Fired when an assertion is made. + + Params: + result (bool) - Whether or not the assertion holds. + message (string) - A message to display if the assertion does not hold. + */ + event TestEvent(bool indexed result, string message); + + // ************************************** general ************************************** + + /* + Function: fail() + + Mark the test as failed. + + Params: + message (string) - A message associated with the failure. + + Returns: + result (bool) - false. + */ + function fail(string message) internal returns (bool result) { + _report(false, message); + return false; + } + + // ************************************** bool ************************************** + + /* + Function: equal(bool) + + Assert that two booleans are equal. + + : A == B + + Params: + A (bool) - The first boolean. + B (bool) - The second boolean. + message (string) - A message that is sent if the assertion fails. + + Returns: + result (bool) - The result. + */ + function equal(bool a, bool b, string message) internal returns (bool result) { + result = (a == b); + if (result) + _report(result, message); + else + _report(result, _appendTagged(_tag(a, "Tested"), _tag(b, "Against"), message)); + } + + /******************************** internal ********************************/ + + /* + Function: _report + + Internal function for triggering . + + Params: + result (bool) - The test result (true or false). + message (string) - The message that is sent if the assertion fails. + */ + function _report(bool result, string message) internal { + if(result) + emit TestEvent(true, ""); + else + emit TestEvent(false, message); + } + + /* + Function: _ltoa + + Convert an boolean to a string. + + Params: + val (bool) - The boolean. + + Returns: + result (string) - "true" if true, "false" if false. + */ + function _ltoa(bool val) internal pure returns (string) { + bytes memory b; + if (val) { + b = new bytes(4); + b[0] = 't'; + b[1] = 'r'; + b[2] = 'u'; + b[3] = 'e'; + return string(b); + } + else { + b = new bytes(5); + b[0] = 'f'; + b[1] = 'a'; + b[2] = 'l'; + b[3] = 's'; + b[4] = 'e'; + return string(b); + } + } + + /* + Function: _tag(string) + + Add a tag to a string. The 'value' and 'tag' strings are returned on the form "tag: value". + + Params: + value (string) - The value. + tag (string) - The tag. + + Returns: + result (string) - "tag: value" + */ + function _tag(string value, string tag) internal pure returns (string) { + + bytes memory valueB = bytes(value); + bytes memory tagB = bytes(tag); + + uint vl = valueB.length; + uint tl = tagB.length; + + bytes memory newB = new bytes(vl + tl + 2); + + uint i; + uint j; + + for (i = 0; i < tl; i++) + newB[j++] = tagB[i]; + newB[j++] = ':'; + newB[j++] = ' '; + for (i = 0; i < vl; i++) + newB[j++] = valueB[i]; + + return string(newB); + } + + /* + Function: _tag(bool) + + Add a tag to a boolean. + + Params: + value (bool) - The value. + tag (string) - The tag. + + Returns: + result (string) - "tag: _ltoa(value)" + */ + function _tag(bool value, string tag) internal pure returns (string) { + string memory nstr = _ltoa(value); + return _tag(nstr, tag); + } + + /* + Function: _appendTagged(string) + + Append a tagged value to a string. + + Params: + tagged (string) - The tagged value. + str (string) - The string. + + Returns: + result (string) - "str (tagged)" + */ + function _appendTagged(string tagged, string str) internal pure returns (string) { + + bytes memory taggedB = bytes(tagged); + bytes memory strB = bytes(str); + + uint sl = strB.length; + uint tl = taggedB.length; + + bytes memory newB = new bytes(sl + tl + 3); + + uint i; + uint j; + + for (i = 0; i < sl; i++) + newB[j++] = strB[i]; + newB[j++] = ' '; + newB[j++] = '('; + for (i = 0; i < tl; i++) + newB[j++] = taggedB[i]; + newB[j++] = ')'; + + return string(newB); + } + + /* + Function: _appendTagged(string, string) + + Append two tagged values to a string. + + Params: + tagged0 (string) - The first tagged value. + tagged1 (string) - The second tagged value. + str (string) - The string. + + Returns: + result (string) - "str (tagged0, tagged1)" + */ + function _appendTagged(string tagged0, string tagged1, string str) internal pure returns (string) { + + bytes memory tagged0B = bytes(tagged0); + bytes memory tagged1B = bytes(tagged1); + bytes memory strB = bytes(str); + + uint sl = strB.length; + uint t0l = tagged0B.length; + uint t1l = tagged1B.length; + + bytes memory newB = new bytes(sl + t0l + t1l + 5); + + uint i; + uint j; + + for (i = 0; i < sl; i++) + newB[j++] = strB[i]; + newB[j++] = ' '; + newB[j++] = '('; + for (i = 0; i < t0l; i++) + newB[j++] = tagged0B[i]; + newB[j++] = ','; + newB[j++] = ' '; + for (i = 0; i < t1l; i++) + newB[j++] = tagged1B[i]; + newB[j++] = ')'; + + return string(newB); + } + +} diff --git a/test/TestNumerology.sol b/tests/contracts/TestNumerology.sol similarity index 94% rename from test/TestNumerology.sol rename to tests/contracts/TestNumerology.sol index 0334c56..7d62231 100644 --- a/test/TestNumerology.sol +++ b/tests/contracts/TestNumerology.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.24; -import "truffle/Assert.sol"; -import "../contracts/Numerology.sol"; +import "./Assert.sol"; +import "contracts/Numerology.sol"; contract TestNumerology { @@ -37,7 +37,7 @@ contract TestNumerology { uint256[3] memory G2 = [56576513649176532955305617254616790498672209379484940581393603843805619269570, 39155707150128334349216371677407456506802956851096117747929288260567018884059, 65341020041517633956166170261014086368942546761318486551877808671514674964848]; uint256[3] memory G3 = [5726454693002325744504615879224937090641195997533856518133185097441749801032, 30465733315910832811384596896851271406814174274894972936708357560288818352423, 66156017442994545069917029407362356499253061781520987122418836382606119623594]; - uint256[3] memory G_plus_G2 = Numerology.addJac(G, G2); + uint256[3] memory G_plus_G2 = Numerology.addJac(G, G2); Assert.equal(Numerology.eq_jacobian(G3, G_plus_G2), true, "3G != G + 2G"); } @@ -48,7 +48,7 @@ contract TestNumerology { uint256[3] memory G2 = [56576513649176532955305617254616790498672209379484940581393603843805619269570, 39155707150128334349216371677407456506802956851096117747929288260567018884059, 65341020041517633956166170261014086368942546761318486551877808671514674964848]; uint256[3] memory G3 = [5726454693002325744504615879224937090641195997533856518133185097441749801032, 30465733315910832811384596896851271406814174274894972936708357560288818352423, 66156017442994545069917029407362356499253061781520987122418836382606119623594]; - Numerology.addJacMutates(G, G2); + Numerology.addJacMutates(G, G2); Assert.equal(Numerology.eq_jacobian(G3, G), true, "3G != G + 2G"); @@ -61,19 +61,19 @@ contract TestNumerology { uint256[3] memory G_again = [0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8, 1]; uint256[3] memory G2 = [56576513649176532955305617254616790498672209379484940581393603843805619269570, 39155707150128334349216371677407456506802956851096117747929288260567018884059, 65341020041517633956166170261014086368942546761318486551877808671514674964848]; - Numerology.addJacMutates(G, G_again); + Numerology.addJacMutates(G, G_again); Assert.equal(Numerology.eq_jacobian(G2, G), true, "2G != G + G"); - + } function testDoubleM_jarl() public { - uint256[3] memory G = [0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8, 1]; + uint256[3] memory G = [0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8, 1]; uint256[3] memory G2 = [56576513649176532955305617254616790498672209379484940581393603843805619269570, 39155707150128334349216371677407456506802956851096117747929288260567018884059, 65341020041517633956166170261014086368942546761318486551877808671514674964848]; - Numerology.doubleMutates(G); + Numerology.doubleMutates(G); Assert.equal(Numerology.eq_jacobian(G, G2), true, "2 ยท G != 2G"); } @@ -84,7 +84,7 @@ contract TestNumerology { int256[4] memory k_l = [int256(-89243190524605339210527649141408088119), int256(-53877858828609620138203152946894934485), int256(-185204247857117235934281322466442848518), int256(-7585701889390054782280085152653861472)]; uint256[4] memory P_Q = [0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8, 0xc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5, 0x1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a]; - + uint256[3] memory kP_lQ = Numerology._sim_mul(k_l, P_Q); uint256[3] memory expected = [0x7635e27fba8e1f779dcfdde1b1eacbe0571fbe39ecf6056d29ba4bd3ef5e22f2, 0x197888e5cec769ac2f1eb65dbcbc0e49c00a8cdf01f8030d8286b68c1933fb18, 1]; diff --git a/tests/test_numerology.py b/tests/test_numerology.py new file mode 100644 index 0000000..ee85f06 --- /dev/null +++ b/tests/test_numerology.py @@ -0,0 +1,15 @@ +def test_numerology(testerchain): + contract, _ = testerchain.interface.deploy_contract('TestNumerology') + + tx = contract.functions.testEqJacobian().transact() + testerchain.wait_for_receipt(tx) + tx = contract.functions.testAddJac().transact() + testerchain.wait_for_receipt(tx) + tx = contract.functions.testAddJacMutates().transact() + testerchain.wait_for_receipt(tx) + tx = contract.functions.testAddJacMutatesDoubles().transact() + testerchain.wait_for_receipt(tx) + tx = contract.functions.testDoubleM_jarl().transact() + testerchain.wait_for_receipt(tx) + tx = contract.functions.testSim_Mul().transact() + testerchain.wait_for_receipt(tx) diff --git a/truffle-init.json b/truffle-init.json deleted file mode 100644 index cb6aa39..0000000 --- a/truffle-init.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "docs_url": "http://truffleframework.com/docs", - "ignore": [ - "README.md", - ".gitignore" - ], - "commands": { - "Compile": "truffle compile", - "Migrate": "truffle migrate", - "Test": "truffle test" - } -} diff --git a/truffle.js b/truffle.js deleted file mode 100644 index bc2b31b..0000000 --- a/truffle.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { -// networks: { -// development: { -// host: "localhost", -// port: 8545, -// network_id: "*", // Match any network id -// gas: 46000000 -// } -// } -};